Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Переход с ПРОФ на КОРП / 8 сообщений из 8, страница 1 из 1
14.01.2013, 16:09
    #38109521
Переход с ПРОФ на КОРП
Обновили ПРОФ на КОРП. Требуется раскидать остатки по счету 02.01 по подразделениям. Не переносится СуммаВРОстатокКт. Подскажите как перенести эти остатки ПР, ВР?


Запрос1 = Новый Запрос;
Запрос1.Текст = "ВЫБРАТЬ
| ОперацияБух.Ссылка
|ИЗ
| Документ.ОперацияБух КАК ОперацияБух
|ГДЕ
| ОперацияБух.Комментарий ПОДОБНО &Комментарий
| И ОперацияБух.Содержание ПОДОБНО &Содержание
| И ОперацияБух.Организация = &Организация
| И КОНЕЦПЕРИОДА(ОперацияБух.Дата, МЕСЯЦ) = &Дата
| И ОперацияБух.ПометкаУдаления = ЛОЖЬ";
Запрос1.УстановитьПараметр("Комментарий", ТекстКомментария);
Запрос1.УстановитьПараметр("Содержание", ТекстКомментария);
Запрос1.УстановитьПараметр("Организация", Организация);
Запрос1.УстановитьПараметр("Дата", КонецМесяца(Дата));
Результат1 = Запрос1.Выполнить();
Выборка1 = Результат1.Выбрать();

Если Выборка1.Следующий() Тогда
Документ = Выборка1.Ссылка.ПолучитьОбъект();
Иначе
//Создаем документ ОперацияБух
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = КонецМесяца(Дата);
Документ.Организация = Организация;
Документ.Содержание = ТекстКомментария;
Документ.СпособЗаполнения = "Вручную";
Документ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Документ.Комментарий = ТекстКомментария;
Документ.Записать();
КонецЕсли;

Запрос2 = Новый Запрос;
Запрос2.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1.Ссылка КАК ОсновноеСредство,
| ХозрасчетныйОстатки.Подразделение,
| ХозрасчетныйОстатки.СуммаОстатокКт,
| ХозрасчетныйОстатки.СуммаНУОстатокКт,
| ХозрасчетныйОстатки.СуммаПРОстатокКт,
| ХозрасчетныйОстатки.СуммаВРОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &Дата,
| Счет = &Счет,
| ,
| Организация = &Организация
| И Подразделение = &Подразделение) КАК ХозрасчетныйОстатки";

Запрос2.УстановитьПараметр("Дата", Дата);
Запрос2.УстановитьПараметр("Счет", Счет);
Запрос2.УстановитьПараметр("Организация", Организация);
Запрос2.УстановитьПараметр("Подразделение", Подразделение);
Результат2 = Запрос2.Выполнить();
Выборка2 = Результат2.Выбрать();

Сумма = 0;

Пока Выборка2.Следующий() Цикл

Запрос3 = Новый Запрос;
Запрос3.УстановитьПараметр("ОсновноеСредство", Выборка2.ОсновноеСредство);
Запрос3.УстановитьПараметр("ДатаСведений", Дата);
Запрос3.УстановитьПараметр("Организация", Организация);
Запрос3.Текст = "ВЫБРАТЬ
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение.Ссылка КАК ПодразделениеБУ
|ИЗ
| РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(
| &ДатаСведений,
| Организация = &Организация
| И ОсновноеСредство = &ОсновноеСредство) КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних";
Результат3 = Запрос3.Выполнить();
Выборка3 = Результат3.Выбрать();

Если Выборка3.Следующий() Тогда
ПодразделениеБУ = Выборка3.ПодразделениеБУ;
КонецЕсли;

ПроводкаБУ1 = Документ.Движения.Хозрасчетный.Добавить();
ПроводкаБУ1.Период = КонецМесяца(Дата);
ПроводкаБУ1.Активность = Истина;
ПроводкаБУ1.СчетДт = Счет;
ПроводкаБУ1.СчетКт = Счет000;
БухгалтерскийУчет.УстановитьСубконто(ПроводкаБУ1.СчетДт, ПроводкаБУ1.СубконтоДт, "ОсновныеСредства", Выборка2.ОсновноеСредство);
ПроводкаБУ1.Сумма = Выборка2.СуммаОстатокКт;
ПроводкаБУ1.СуммаНУДт = Выборка2.СуммаНУОстатокКт;
ПроводкаБУ1.СуммаПРДт = Выборка2.СуммаПРОстатокКт;
ПроводкаБУ1.СуммаВРДт = Выборка2.СуммаВРОстатокКт;
ПроводкаБУ1.Содержание = ТекстКомментария;

Сумма = Сумма + ПроводкаБУ1.Сумма;

ПроводкаБУ2 = Документ.Движения.Хозрасчетный.Добавить();
ПроводкаБУ2.Период = КонецМесяца(Дата);
ПроводкаБУ2.Активность = Истина;
ПроводкаБУ2.СчетДт = Счет000;
ПроводкаБУ2.СчетКт = Счет;
БухгалтерскийУчет.УстановитьСубконто(ПроводкаБУ2.СчетКт, ПроводкаБУ2.СубконтоКт, "ОсновныеСредства", Выборка2.ОсновноеСредство);
ПроводкаБУ2.Сумма = Выборка2.СуммаОстатокКт;
ПроводкаБУ2.СуммаНУКт = Выборка2.СуммаНУОстатокКт;
ПроводкаБУ2.СуммаПРКт = Выборка2.СуммаПРОстатокКт;
ПроводкаБУ2.СуммаВРКт = Выборка2.СуммаВРОстатокКт;
ПроводкаБУ2.Содержание = ТекстКомментария;
ПроводкаБУ2.ПодразделениеКт = ПодразделениеБУ;

Сумма = Сумма + ПроводкаБУ2.Сумма;

Документ.Записать();

ОбработкаПрерыванияПользователя();

КонецЦикла;

Документ.СуммаОперации = Сумма;
Документ.Записать();
ФормаДокумента = Документ.ПолучитьФорму();
ФормаДокумента.Открыть();
...
Рейтинг: 0 / 0
14.01.2013, 17:14
    #38109657
chatm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход с ПРОФ на КОРП
ЕленаПрекрасная,

а кто писал этот "прекрасный" код?

1.
Код: sql
1.
И ОперацияБух.ПометкаУдаления = ЛОЖЬ

- это вообще откуда?

2. Запрос внутри цикла - бывают такие вещи (одноразовые или от безысходности). Здесь ни того ни другого я не вижу

3. А собственно во втором запросе какой результат выборки?
...
Рейтинг: 0 / 0
15.01.2013, 15:07
    #38110795
Переход с ПРОФ на КОРП
chatm,

2. Это одноразовая вещь.

3. Во втором запросе получают остатки по счету. Что не так?
...
Рейтинг: 0 / 0
15.01.2013, 15:46
    #38110888
chatm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход с ПРОФ на КОРП
ЕленаПрекрасная,

результат этой выборки содержит ненулевые значения агрегатной функции требуемого реквизита?
...
Рейтинг: 0 / 0
15.01.2013, 16:28
    #38110974
Переход с ПРОФ на КОРП
chatm,

Он содержит то, что нужно. В результате модернизации ОС возникли временные разницы.


Как специалист оцените такой вариант запроса, пож-та:

Запрос1 = Новый Запрос;
Запрос1.Текст = "ВЫБРАТЬ
| ОперацияБух.Ссылка
|ИЗ
| Документ.ОперацияБух КАК ОперацияБух
|ГДЕ
| ОперацияБух.Комментарий ПОДОБНО &Комментарий
| И ОперацияБух.Содержание ПОДОБНО &Содержание
| И ОперацияБух.Организация = &Организация
| И КОНЕЦПЕРИОДА(ОперацияБух.Дата, МЕСЯЦ) = &Дата
| И ОперацияБух.ПометкаУдаления = ЛОЖЬ";
Запрос1.УстановитьПараметр("Комментарий", ТекстКомментария);
Запрос1.УстановитьПараметр("Содержание", ТекстКомментария);
Запрос1.УстановитьПараметр("Организация", Организация);
Запрос1.УстановитьПараметр("Дата", КонецМесяца(Дата));
Результат1 = Запрос1.Выполнить();
Выборка1 = Результат1.Выбрать();

Если Выборка1.Следующий() Тогда
Документ = Выборка1.Ссылка.ПолучитьОбъект();
Иначе
//Создаем документ ОперацияБух
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = КонецМесяца(Дата);
Документ.Организация = Организация;
Документ.Содержание = ТекстКомментария;
Документ.СпособЗаполнения = "Вручную";
Документ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Документ.Комментарий = ТекстКомментария;
Документ.Записать();
КонецЕсли;

Запрос2 = Новый Запрос;
Запрос2.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1.Ссылка КАК ОсновноеСредство,
| ХозрасчетныйОстатки.Подразделение,
| ХозрасчетныйОстатки.СуммаОстатокКт,
| ХозрасчетныйОстатки.СуммаНУОстатокКт,
| ХозрасчетныйОстатки.СуммаПРОстатокКт,
| ХозрасчетныйОстатки.СуммаВРОстатокКт,
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение КАК ПодразделениеБУ
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &Дата,
| Счет = &Счет,
| ,
| Организация = &Организация
| И Подразделение = &Подразделение) КАК ХозрасчетныйОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(&Дата, Организация = &Организация) КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
| ПО ХозрасчетныйОстатки.Субконто1 = МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство";

Запрос2.УстановитьПараметр("Дата", Дата);
Запрос2.УстановитьПараметр("Счет", Счет);
Запрос2.УстановитьПараметр("Организация", Организация);
Запрос2.УстановитьПараметр("Подразделение", Подразделение);
Результат2 = Запрос2.Выполнить();
Выборка2 = Результат2.Выбрать();

Сумма = 0;

Пока Выборка2.Следующий() Цикл

ПроводкаБУ1 = Документ.Движения.Хозрасчетный.Добавить();
ПроводкаБУ1.Период = КонецМесяца(Дата);
ПроводкаБУ1.Активность = Истина;
ПроводкаБУ1.СчетДт = Счет;
ПроводкаБУ1.СчетКт = Счет000;
БухгалтерскийУчет.УстановитьСубконто(ПроводкаБУ1.СчетДт, ПроводкаБУ1.СубконтоДт, "ОсновныеСредства", Выборка2.ОсновноеСредство);
ПроводкаБУ1.Сумма = Выборка2.СуммаОстатокКт;
ПроводкаБУ1.СуммаНУДт = Выборка2.СуммаНУОстатокКт;
ПроводкаБУ1.СуммаПРДт = Выборка2.СуммаПРОстатокКт;
ПроводкаБУ1.СуммаВРДт = Выборка2.СуммаВРОстатокКт;
ПроводкаБУ1.Содержание = ТекстКомментария;

Сумма = Сумма + ПроводкаБУ1.Сумма;

ПроводкаБУ2 = Документ.Движения.Хозрасчетный.Добавить();
ПроводкаБУ2.Период = КонецМесяца(Дата);
ПроводкаБУ2.Активность = Истина;
ПроводкаБУ2.СчетДт = Счет000;
ПроводкаБУ2.СчетКт = Счет;
БухгалтерскийУчет.УстановитьСубконто(ПроводкаБУ2.СчетКт, ПроводкаБУ2.СубконтоКт, "ОсновныеСредства", Выборка2.ОсновноеСредство);
ПроводкаБУ2.Сумма = Выборка2.СуммаОстатокКт;
ПроводкаБУ2.СуммаНУКт = Выборка2.СуммаНУОстатокКт;
ПроводкаБУ2.СуммаПРКт = Выборка2.СуммаПРОстатокКт;
ПроводкаБУ2.СуммаВРКт = Выборка2.СуммаВРОстатокКт;
ПроводкаБУ2.Содержание = ТекстКомментария;
ПроводкаБУ2.ПодразделениеКт = Выборка2.ПодразделениеБУ;

Сумма = Сумма + ПроводкаБУ2.Сумма;

Документ.Записать();

ОбработкаПрерыванияПользователя();

КонецЦикла;

Документ.СуммаОперации = Сумма;
Документ.Записать();
ФормаДокумента = Документ.ПолучитьФорму();

ФормаДокумента.Открыть();
...
Рейтинг: 0 / 0
15.01.2013, 16:39
    #38110998
chatm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход с ПРОФ на КОРП
ЕленаПрекрасная,

первые пришедшие в голову при виде данного кода

1. Насколько я понял, в первом запросе Вы ищите документ и если не находите, то создаете. Если это так, то оставляя за скобками всю эту обработку и логику в целом, то в Запрос1 можно добавить Первые 1, упорядочить по убыванию и т.д.

2. Запрос2 и Запрос3 вполне могут существовать в рамках одного запроса. Временные таблицы или пакетный запрос - на Ваше усмотрение

3. Для упрощения заполнения реквизитов лучше использовать функцию ЗаполнитьЗначенияСвойств, только названия должны совпадать

4. Если в РС "МестонахождениеОСБухгалтерскийУчет" не будет подходящих записей, то при левом соединении что будет в результате "ПодразделенияБУ"?
...
Рейтинг: 0 / 0
15.01.2013, 21:19
    #38111461
Переход с ПРОФ на КОРП
chatm,

1, 2, 3. спасибо. учусь.

4. Такого вроде быть не может. Все ОС делают движения по этому регистру. Если бухгалтер в соответствующем документе не указал местонахождение ОС, тогда там будет не заполнено поле подразделение. В ОСВ по счету 02.01 остатки по этим ОС останутся не перенесенными. Соответственно надо будет сделать корректировку записей регистра и потом еще раз запустить обработку или если таких не много руками в созданном ОперБух указать подразделение.
...
Рейтинг: 0 / 0
15.01.2013, 21:53
    #38111488
chatm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход с ПРОФ на КОРП
ЕленаПрекрасная,

по п.4 - я написал к тому, что при заполнении документа надо отрабатывать такие нюансы (проверять значение реквизита)
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Переход с ПРОФ на КОРП / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]