|
документ операция - нет дублям проводок | ☑ | ||
---|---|---|---|---|
0
pro3ri
13.08.15
✎
13:16
|
ДОбрый день.
В тз: Создайте документ «Операция» для формирования произвольных проводок пользователем. Обеспечьте следующее поведение документа: • В документе не должно быть проводок с одинаковыми счетами и аналитикой; Как такое реализовать? |
|||
1
Asmody
13.08.15
✎
13:20
|
Что-то где-то надо сгруппировать
|
|||
2
jsmith82
13.08.15
✎
13:20
|
Свернуть строки в запросе группировкой с применением агрегатных функций
|
|||
3
pro3ri
13.08.15
✎
13:24
|
(2) а в каком событии это надо делать?
|
|||
4
pro3ri
13.08.15
✎
13:24
|
я так понимаю ПередЗаписью модуля набора записей?
|
|||
5
jsmith82
13.08.15
✎
13:25
|
(4) Я так понимаю, тебе надо профессию менять )
|
|||
6
StanleyMarsh
13.08.15
✎
13:33
|
(5) так в конфигурациях 1С при проведении они так и сворачиваются.
|
|||
7
pro3ri
13.08.15
✎
13:43
|
(6) самописка
|
|||
8
pro3ri
13.08.15
✎
13:54
|
написал такой код в модуле набора записей:
Процедура ПередЗаписью(Отказ, РежимЗаписи) Ссылка = Отбор.Регистратор.Значение; Если ТипЗнч(Ссылка)= Тип("ДокументСсылка.Операция") Тогда Для каждого Запись Из ЭтотОбъект Цикл Запись.Период = Ссылка.Дата; КонецЦикла; КонецЕсли; КонецПроцедуры Процедура ПриЗаписи(Отказ, РежимЗаписи) Ссылка = Отбор.Регистратор.Значение; Если ТипЗнч(Ссылка)= Тип("ДокументСсылка.Операция") Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РегистрБухгалтерии1ДвиженияССубконто.СчетДт КАК СчетДт, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1, | РегистрБухгалтерии1ДвиженияССубконто.СчетКт КАК СчетКт, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2, | СУММА(РегистрБухгалтерии1ДвиженияССубконто.Сумма) КАК Сумма, | РегистрБухгалтерии1ДвиженияССубконто.Период КАК Период |ИЗ | РегистрБухгалтерии.РегистрБухгалтерии1.ДвиженияССубконто КАК РегистрБухгалтерии1ДвиженияССубконто |ГДЕ | РегистрБухгалтерии1ДвиженияССубконто.Регистратор = &Ссылка | |СГРУППИРОВАТЬ ПО | РегистрБухгалтерии1ДвиженияССубконто.СчетДт, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1, | РегистрБухгалтерии1ДвиженияССубконто.СчетКт, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт2, | РегистрБухгалтерии1ДвиженияССубконто.Период"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Если Не Запрос.Выполнить().Пустой() Тогда ТЗ = Запрос.Выполнить().Выгрузить(); ЭтотОбъект.Загрузить(ТЗ); Иначе Отказ = Истина; Сообщить("документ пустой"); КонецЕсли; КонецЕсли; КонецПроцедуры но как результат запроса записать в базу данных? Не проходит ЭтотОбъект.Загрузить(ТЗ); |
|||
9
pro3ri
13.08.15
✎
14:26
|
переделал код на такой: в результате все правильно, только почему-то запись не происходит:
Процедура ПриЗаписи(Отказ, РежимЗаписи) Ссылка = Отбор.Регистратор.Значение; Если ТипЗнч(Ссылка)= Тип("ДокументСсылка.Операция") Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РегистрБухгалтерии1ДвиженияССубконто.СчетДт КАК СчетДт, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1, | РегистрБухгалтерии1ДвиженияССубконто.СчетКт КАК СчетКт, | СУММА(РегистрБухгалтерии1ДвиженияССубконто.Сумма) КАК Сумма, | РегистрБухгалтерии1ДвиженияССубконто.Период КАК Период, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт1 |ИЗ | РегистрБухгалтерии.РегистрБухгалтерии1.ДвиженияССубконто КАК РегистрБухгалтерии1ДвиженияССубконто |ГДЕ | РегистрБухгалтерии1ДвиженияССубконто.Регистратор = &Ссылка | |СГРУППИРОВАТЬ ПО | РегистрБухгалтерии1ДвиженияССубконто.СчетДт, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1, | РегистрБухгалтерии1ДвиженияССубконто.СчетКт, | РегистрБухгалтерии1ДвиженияССубконто.Период, | РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт1"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Если Не Запрос.Выполнить().Пустой() Тогда Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЭтотОбъект.Очистить(); Проводка = Добавить(); Проводка.Период = Ссылка.Дата; Если Выборка.СчетДт<>NUll Тогда Проводка.СчетДт = Выборка.СчетДт; КонецЕсли; Если Выборка.СчетКт<>NUll Тогда Проводка.СчетКт = Выборка.СчетКт; КонецЕсли; Если Выборка.СубконтоДт1<>NUll Тогда Проводка.СубконтоДт[Проводка.СчетДт.ВидыСубконто[0].ВидСубконто] =Выборка.СубконтоДт1; КонецЕсли; Если Выборка.СубконтоКт1<>NUll Тогда Проводка.СубконтоКт[Проводка.СчетКт.ВидыСубконто[0].ВидСубконто] =Выборка.СубконтоКт1; КонецЕсли; Проводка.Сумма = Выборка.Сумма; Проводка.Регистратор = Отбор.Регистратор.Значение; КонецЦикла; Иначе Отказ = Истина; Сообщить("документ пустой"); КонецЕсли; КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |