Из .cf, как мне кажется, не очень получится создать чистую Базу. Но на 100% утверждать не берусь: ни разу не пробовал Попробуйте загрузить из ЧИСТОЙ .dt
Какой именно процесс Вам хочется автоматизировать?
Если у Вас в Системе есть Документ реализации товаров, используете механизм ввода на основании, либо Заполнить - добавить из Реализации Если у Вас в Системе этого документа нет, то укажите себестоимость вручную. По-другому никак
У Вас есть ПериодМес - выводится в столбцах таблицы. Добавляете вычисляемое поле ПериодКвартал = НачалоПериода(ПериодМес, "Квартал"), указываете ему в оформлении форматную строку типа ДФ='к "квартал" yyyy' Затем в столбцах таблицы группировка верхнего уровня - ПериодКвартал, в неё вложенная ПериодМес. Как-то так
Запрос, думаю, выбирает движения раздельно (если периодичность Авто или Запись), а вот СКД уже их компонует автоматом, если указана группировка Регистратор (или какая-то другая). Детальные записи должны дать столько строк, сколько у Вас движений. Добавляйте еще группировку по НомерСтроки. Либо же попробуйте извернуться вычисляемым полем вроде ЭтоУслуги = ВЫБОР КОГДА СуммаУслуг=0 ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ и группируйте по нему вместе с регистратором
// Загрузка Макет1 = ПолучитьМакет("ТаблицаГдеУНасДанные"); ТабДанные = Новый ТабличныйДокумент; ТабДанные.Вывести(Макет1);
Построитель1 = Новый ПостроительОтчета; Построитель1.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДанные.Область()); Построитель1.Выполнить();
тбРез = Построитель1.Результат.Выгрузить();
"ТаблицаГдеУНасДанные" - табличный документ, где в первой строке Идентификаторы - это будут наименования колонок. Например, "Наименование", "Штрихкод", "АртикулНоменклатуры" (без кавычек). Пробелы лучше не использовать тбРез - таблица значений, с которой можно работать
Попробуйте так. Заходим в РегистрыСведений.ЗаполнениеПлановыхНачислений. Ставим отбор по "ОбъектЗаполнения"= Нарахування зарплаты №8, вычищаем записи и пробуем удалить по-новой
Не уверен, что правильно понял задачу, но предполагаю, что таким запросом её не решить. У Вас должна быть группировка по ПодразделениеРодитель без группировки по Подразделению, иначе Вы неправильно получите диапазон "вредняка", в который у Вас попадет данный сотрудник.
То есть, у Вас в запросе будут переменные типа
ВЫБОР КОГДА ВнутреннееОборот>0 И ВнутреннееОборот<=100 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК Диапазон1,
ВЫБОР КОГДА ВнутреннееОборот>100 И ВнутреннееОборот<=200 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК Диапазон2,
И если Вы не сгруппируете предварительно результат по ПодразделениеРодитель, Вы не получите правильные значения ВнутреннееОборот
Но, конечно же, есть и хорошая новость. Если Вам нужен именно отчет, то СКД в данном случае всё сделает идеально. Указанные выше функции прописываете в Вычисляемые поля, а потом хорошенько колдуете на закладке "Ресурсы" (там нельзя делать ресурс СУММА(Диапазон1), а нужно повозиться с етой формулой)
Не вполне понятно, у Вас не срабатывает ПередЗаписью() в модуле формы при вызове
Цитата
Записать(РежимЗаписиДокумента.Запись);
? Дык, оно и не должно. В модуле формы это событие возникнет только при интерактивной записи документа из его формы А вот ПередЗаписью() в модуле объекта, да, выполняется и при программной и при интерактивной записи объекта
Если это не запрос для получения динамического списка, то мои советы такие: 1. Попробуйте вместо вложенных запросов использовать временные таблицы 2. С временными таблицами используйте индексы по полям, которые потом будете соединять. Если есть составные поля (Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Заказ итп), желательно во временной таблице их типизировать 3. Консолью запроса смотрите, сколько записей в каждой из временных таблиц и сколько времени они формируются. И пытаетесь понять, что не так. Возможно, для конкретно Вашей Базы ничего здесь оптимизацией запроса и не сделаешь: быть может, у Вас слишком много Номенклатуры и Заказов? Нужно анализировать
Временные таблицы: ВТНоменклатураДополнительныеРеквизиты ВТВложенныйЗапрос ВТВложенныйЗапрос1 ВТВЗВозвраты и финальный запрос, где все они соединяются с ПриходныйКассовыйОрдерРасшифровкаПлатежа
Что-то как-то Вы неправильно с вложенными таблицами в Запросе работаете. Рекомендую почитать, например, вот ето
Выражение
РезультатВыбора.Товары.Columns.КодНоменклатуры
вернет Вам колонку результата запроса, которая в Вашем случае будет COM-объектом
Вам нужно что-то вроде
... Пока РезультатВыбора.Следующий() Цикл
// здесь должна быть выборка по строкам таб. части Товары - обходим строки данной таб. части ВыборкаТовары = РезультатВыбора.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
КодНоменклатуры = ВыборкаТовары.КодНоменклатуры; // вот ето значение примитивного типа, по нему можете осуществлять поиск в текущей Базе
НоменклатураCOM = ВыборкаТовары.Номенклатура; // а ето Номенклатура из COM-базы. То есть, COM-объект
НоменклатураНаименование = НоменклатураCOM.Наименование; // ето также значение примитивного типа, по нему можно осуществлять поиск
НоменклатураUID = НоменклатураCOM.УникальныйИдентификатор(); // а вот по етой позиции лучше всего искать ссылку, если у Вас идет синхронизация обмена по внутреннему идентификатору
Гм. Могу предположить "по приборам" (не зная Конфигурации), что проблему можно решить таким образом: Объект.ПодготовитьТаблицы() вызывает ОбщегоНазначения.СформироватьЗапросПоТабличнойЧасти(), где формируется запрос к документу
... Запрос.Текст = "ВЫБРАТЬ | Док.НомерСтроки " + ТекстЗапроса + " | ИЗ | Документ." + ДокументОбъект.Метаданные().Имя + "."+ СокрЛП(ИмяТабличнойЧасти) + " КАК Док | ГДЕ Док.Ссылка = &ДокументСсылка"; ...
Вот если ету конструкцию дополнить
... | УПОРЯДОЧИТЬ ПО | Док.НомерСтроки ...
, то, как мне думается, это должно помочь в большинстве документов
А вот о причине такой сортировки при смене СУБД мне трудно судить: знаний не хватает. Если мне не изменяет память, у меня была подобная ситуация после перехода с файловой БД как раз на MS SQL. Но в другом запросе УТП. Где-то в УправленииЗапасами емнип. Но смысл был тот же самый: вылечилось сортировкой по НомеруСтроки
Татьяна92 @ 14.07.20, 13:44
, Что-то тут не то. Скажите, какая у Вас Конфигурация хотя-бы. Возможно, запасы съехали где-то в управленческих регистрах, поэтому и формируется неправильная проводка
из приведенного вами примера можно попросить скриншоты Конструктора настроек компоновки данных по шагам?
В топку Конструктор. Создаете запрос в "Наборы данных", прописываете "Ресурсы" на соответствующей закладке. На закладке "Настройки" по отчету тыцкаете правой клавишей мыши - "Новая диаграмма". Получаете чудесную заготовку, которую и настраиваете
Цитата(Orion-PS @ 14.07.20, 13:40)
Как Вы получили поле "ПериодМесяц"? В параметрах виртуальной таблицы периодичность "Месяц", конечно, задается, но в поля это значение само не попадает...
Поставьте в параметры виртуальной таблицы "Авто". Можно поставить и "Месяц", тогда поле будет называться "Период"
А что у Вас за Конфигурация, в которой ведется учет топлива? Или учет топлива ведется в одной конфигурацией, а затем выгружается в Бухгалтерию? Ведется ли партионный учет? Возможно, цену топлива в конце месяца у Вас призван выравнивать какой-то регламентный документ, который забывают провести?
Если у Вас обычная Бухгалтерия, тогда Вам придется выравнивать остатки. Вдумчиво. Этапы примерно такие:
1. Выбираем месяц, с которого хотим жить по-новому (с корректными остатками и движениями)
2. Выравниваем сумму остатка топлива на начало етого месяца. Основные критерии, на которые обращаем внимание: - количество не должно быть отрицательным - если количество 0, то сумма тоже должна быть 0 - цена остатка топлива должна соответствовать ценам в партиях закупок. Если партионный учет, то чотко соответствовать. Если средняя цена, то плюс-минус от текущей цены топлива (если не имеет места такая ситуация, что машина давно простаивает и в ней числится топливо еще 2000-какого-то старого года)
Например, на Вашей картинке по А-92 цена в машинах более-менее похожа на правду (кроме Основного склада, где к-во 0). А вот по ДТ что-то не то: по Komatsu-500 на начало месяца цена 58.64грн. Вроде топлива по такой цене у нас (еще?) не было
Все эти остатки нужно выравнивать для всех аналитик 203 счета: Номенклатура, Склад, Партия (если есть)
Лучший способ выравнивания - инвентаризация. Но это крайний способ. Нужно как-то выровнять суммы без количества. Например, ручной операцией
3. После выравнивания остатков на начало месяца, перепроводим все документы по ГСМ за месяц. И смотрим на критерии, указанные в п. 2 внутри месяца. Например, на 15 число. Если нет, на более ранее. То есть, формируем оборотку с 01 числа по 15. Если суммы косячат, с 01 по 10 итд. Вплоть до интервала с 01 по 01. Задача - найти дату, где начинаются косяки. Внутри этой даты ищем документы, которые списали (оприходовали) топливо по неправильной цене и пытаемся понять, в чем дело. Часто, дело в последовательности документов внутри дня - во времени приходных и расходных документов
4. После того, как получим результаты анализа п. 3, будут примерно понятны основные причины возникновения некорректных остатков. Например, можно будет установить правила: все приходы внутри дня проводить со временем 09:00, все перемещения 11:00, все списания - 17:00 И дальнейшая отладка остатков 203 счета (в последующих месяцах) пойдет значительно проще
Указанной конфигурации под рукой нет, но общие соображения такие:
1. Курс валют содержит отношение указанной валюты к валюте регламентированного учета. Обратите внимание на Сервис - Настройка параметров учета - Валюты (или как-там оно называется в Альфа-Авто?). В типовых, которые у меня есть под рукой, подробно написано:
Подчеркиваю: "По отношению к этой валюте указывается курс других валют"
2. Если валюта упр учета у Вас USD, то СуммаУпрОстаток - это сумма в долларах. СуммаГрн = СуммаДол*КурсДол. Как у Вас и получилось в первом подзапросе из объединения
3. Исходя из п.1, курс валюты регламентированного учета (грн) всегда должен быть равен 1, то есть, во втором подзапросе "КурсыВалютСрезПоследних.Курс" всегда будет 1 и Вы просто получили СуммуУпрОстаток, то есть, сумму в долларах
4. Информации о курсе Рубля к Доллару и Евро к Доллару в системе просто нет (см. п.1). Поэтому, единственное, как мы может получить оценку стоимости в этих валютах - это привести стоимость к гривням, а затем разделить на курс требуемой валюты:
СуммаРуб = СуммаГрн/КурсРуб = (СуммаДол*КурсДол)/КурсРуб СуммаЕвро = СуммаГрн/КурсЕвро = (СуммаДол*КурсДол)/КурсЕвро (да-да, сумма в Евро будет меньше, чем сумма в Дол, поскольку курс Евро больше, чем курс Дол, а у Вас получилось наоборот)
В некоторых валютах (обычно, для Рубля) кроме курса указывается еще и кратность, не равная 1. Поэтому, там, где написано КурсРуб, КурсЕвро итд, следует иметь в виду, что это КурсСУчетомКратности = КурсыВалютСрезПоследних.Курс/КурсыВалютСрезПоследних.Кратность
То есть, при пересчете обычно поступаем так:
1. Проверяем, что у нас за валюта упр. учета? Если она совпадает с валютой регл. учета, то КурсУпр = 1, если нет, то находим КурсУпр в курсах валют (желательно забыть, что мы знаем, что это доллар и передавать &ВалютаУпр и &ВалютаРегл в параметрах, мы же делаем обработку на все случаи жизни, вдруг примените свою обработку на Базе, где упр учет ведется в Евро?) 2. Находим КурсПересчитываемойВалюты по отношению к ВалютеРегл по переданному параметру &ВалютаПересчета 3. Получаем то, что хотим: СуммаПересчитаннаяВВалюте = СуммаУпр*КурсУпр/КурсПересчитываемойВалюты
ИМЕЮЩИЕ КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) > 1
Я такую конструкцию, признаюсь, никогда не использовал. Даже более того: конструктор на 8.2 мне её не пропустил, специально проверил. На 8.3 всё нормально: век живи
Понимаю так: Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг дает булевое значение. ЛОЖЬ понимается, как 0, ИСТИНА как 1. Так вот, если у Вас будет Поступление товаров и услуг, от которого пойдет более одного движения в Регистр.Закупки с TOPGP, то каждое из этих движений увеличит результат функции КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг). То есть, документ будет один, а движений несколько. А в задаче, если я правильно понял условие "и если кол-во документов "поступлений товара" больше 1", нужно считать именно документы Поступления, а не сами поступления. Поэтому, предполагаю, Ваш руководитель хочет "ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Закупки.Регистратор) > 1"
Семерка, конечно, штука почти забытая, но вроде бы, настройки каждой печатной формы хранятся на конкретном компе для конкретного Пользователя. Где-то глубоко внутри. Попробуйте следующую последовательность действий: 1. Выводим на экран в режиме 1С-предприятия нужную печатную форму, убеждаемся, что она на двух станицах 2. Добиваемся, чтобы она печаталась у нас на одной странице. Вплоть до того, что, что ставим 50% масштаб. Обязательно печатаем на принтер 3. Пробуем получить печатную форму с нужными параметрами на одну страницу (автомасштаб, поля в минимум). Опять обязательно печатаем страницу 4. Перезаходим в 1С и смотрим, не победили ли мы эту печатную форму насовсем
Заранее извиняюсь, если написал муть: давно ето было
В Толстом клиенте в отчете "Товары на складах" в Параметрах есть замечательная галочка "Использовать свойства и категории", при ее включении в Отборах можно фильтровать номенклатуру по Категориям
В Веб-клиенте такой галочки "Использовать свойства и категории" нет в Настройках
Вопрос в том, имеется в виду толстый клиент обычные формы или толстый клиент управляемые формы? В обычных формах ета галочка безусловно есть. Там ведомость по товарам на складах формируется на базе Универсального отчета, где по данной настройке включается запрос по Характеристикам
В управляемой форме и в веб-клиенте этой галочки нет. Отчет формируется из СКД, куда свойства и категории включатся автоматически в режиме 1С-Предприятия. То есть, свойства и категории Номенклатуры будут включены в Номенклатуру наравне с её реквизитами. Свойства и категории Характеристики номенклатуры - в Характеристику. Если проще, то нажимайте "плюсик" и там должны быть перечислены свойства (если, конечно, они есть и у них есть значения в регистрах ЗначенияСвойствОбъектов или КатегорииОбъектов)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!