Часто приходится решать задачку отображения наличия и состояния подчиненных документов в списке Счетов или Заказов. И мое решение очень не оптимально в плане кода, потому что с увеличением количества документов в списке начинаются тормоза, список не просто медленно , а жутко медленно открывается и навигация по нему становится мучительным занятием для пользователя
Это первая проблема . А вторая , которая ,возможно, первую усугубляет, это то, что приходится использовать картинки для отображения трех различных состояний флажка : 1- подчиненного документа нет, 2- подчиненный документ есть, но не проведен, 3- подчиненный документ есть и проведен.
Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) // Вставить содержимое обработчика. Ссылка = ДанныеСтроки.Ссылка; Если Ссылка = Неопределено Тогда Возврат; КонецЕсли;
// рез = Привелегированный.ОбработатьЗаказ(ССылка); Если не рез.Пустой() Тогда Выборка = рез.Выбрать(); Выборка.Следующий(); ОформлениеСтроки.Ячейки.Оплата.УстановитьТекст(Формат(Выборка.сумма, \"ЧДЦ=2\"));
Если РезВыборки <> null и РезВыборки > 0 тогда Ячейка.ОтображатьКартинку = Истина; Ячейка.ИндексКартинки = 0; Если РезВыборкиПроведен тогда Ячейка.ИндексКартинки = 1; КонецЕсли; КонецЕсли;
КонецПроцедуры
В общем привилегированном модуле выполняется запрос на наличие подчиненных документов, дабы дать возможность видеть список пользователям с ограниченными правами:
Запрос = новый запрос; Запрос.Текст = \"ВЫБРАТЬ | СУММА(ВнутрЗапрос.Сумма) КАК Сумма, | СУММА(ЕСТЬNULL(ВнутрЗапрос.СуммаРН, 0)) КАК СуммаРН, | СУММА(ЕСТЬNULL(ВнутрЗапрос.СуммаНН, 0)) КАК СуммаНН, | СУММА(ЕСТЬNULL(ВнутрЗапрос.Пс, 0)) КАК ПС, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПроведенРН, 0)) КАК ПроведенРН, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПроведенНН, 0)) КАК ПроведенНН, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПроведенПВ, 0)) КАК ПроведенПВ, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПроведенПС, 0)) КАК ПроведенПС, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПМ, 0)) КАК ПМ, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПроведенПМ, 0)) КАК ПроведенПМ, | СУММА(ЕСТЬNULL(ВнутрЗапрос.ПВ, 0)) КАК ПВ |ИЗ | (ВЫБРАТЬ | ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборотКт, 0) КАК Сумма, | 0 КАК СуммаРН, | 0 КАК СуммаНН, | 0 КАК ПВ, | 0 КАК Пс, | NULL КАК ПМ, | NULL КАК ПроведенРН, | NULL КАК ПроведенНН, | NULL КАК ПроведенПВ, | NULL КАК ПроведенПС, | NULL КАК ПроведенПМ | ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = &Счет, , Субконто3 = &ссылка, корСчет = &корСчет, ) КАК ХозрасчетныйОбороты | ГДЕ | ХозрасчетныйОбороты.СуммаОборотКт > 0 | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 0, | СУММА(РеализацияТоваровУслуг.СуммаДокумента), | 0, | 0, | 0, | NULL, | ВЫБОР | КОГДА РеализацияТоваровУслуг.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ, | NULL, | NULL, | NULL, | NULL | ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ГДЕ | (РеализацияТоваровУслуг.Сделка = &Ссылка | ИЛИ РеализацияТоваровУслуг.ДокументОснование = &Ссылка) | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА РеализацияТоваровУслуг.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 0, | 0, | СУММА(НалоговаяНакладная.СуммаДокумента), | 0, | 0, | NULL, | NULL, | ВЫБОР | КОГДА НалоговаяНакладная.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ, | NULL, | NULL, | NULL | ИЗ | Документ.НалоговаяНакладная КАК НалоговаяНакладная | ГДЕ | (НалоговаяНакладная.ДокументОснование = &Ссылка | ИЛИ НалоговаяНакладная.Сделка = &Ссылка) | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА НалоговаяНакладная.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 0, | 0, | 0, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПеремещениеТоваров.Ссылка), | 0, | NULL, | NULL, | NULL, | ВЫБОР | КОГДА ПеремещениеТоваров.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ, | NULL, | NULL | ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров | ГДЕ | ПеремещениеТоваров.ДокументОснование = &Ссылка | И ПеремещениеТоваров.СкладПолучатель = &СкладВ | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПеремещениеТоваров.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 0, | 0, | 0, | 0, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СкладскаяНакладная.Ссылка), | NULL, | NULL, | NULL, | NULL, | ВЫБОР | КОГДА СкладскаяНакладная.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ, | NULL | ИЗ | Документ.СкладскаяНакладная КАК СкладскаяНакладная | ГДЕ | СкладскаяНакладная.ДокументОснование = &Ссылка | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА СкладскаяНакладная.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | NULL, | NULL, | NULL, | NULL, | NULL, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПеремещениеТоваров.Ссылка), | NULL, | NULL, | NULL, | NULL, | ВЫБОР | КОГДА ПеремещениеТоваров.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ | ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров | ГДЕ | ПеремещениеТоваров.ДокументОснование = &Ссылка | И ПеремещениеТоваров.СкладПолучатель = &СкладПМ | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПеремещениеТоваров.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК ВнутрЗапрос\";
Аванс начисляется сначала в документе Начисление ЗП с установленным флажком Предварительный расчет. В этом случае появляется опция за какое количество дней считаем. Делается расчет без налогов. Затем делаем Зарплата к выплате с видом Аванс(за попереднім розрахунком) и заполняем. Он выбирает данные, рассчитанные в Начислении. В этом же документе расчитываем налоги. Если соблюдать такую последовательность и устанавливать флажки верно , то суммы расчитываются правильно.
Словно с кассовым аппаратом работаете ... Движение с минусом делает документ? Просмотрите по отчету по взаиморасчетам почему вылазят остатки, может не все измерения учли, с датой(временем) что-то не так
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!