Як один із варіантів код формування ОСВ можна перемістити у форму зовнішньої обробки в процедуру "ПриОткрытии" а саму обробку запускати через планувальник windows
В отчете на СКД не устраивает стандартная шапка отчета. Структура колонок: ПериодМесяц, ХранилищеДенежныхСредств (видно на скриншоте)
Нужно такую шапку (Выделено зеленым):
Пробовал через "макет заголовка", "макет заголовка группировки" указывая в них группировки из колонок, но результатат далеко не тот. С отчетами где есть только строки у меня раньше проблем не возникало, а с таблицей я что-то запутался
Приветствую уважаемые. Наведите на путь истинный, каким образом добавить строчку "сальдо на начало периода" и убрать "Сумма" под каждым месяцем как на скриншоте. Интересует: возможно ли такое реализовать с помощью настроек СКД или плюнуть и создать свой собственный макет на закладке "Макеты" ?
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли; КонецЦикла;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ(РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Возврат; КонецЕсли;
Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл |ГДЕ | РасходнаяНакладнаяТЧРасхНакл.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок) | И Склад = &Склад) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Отбор = Новый Структура;
Пока ВыборкаИзЗапроса.Следующий() Цикл
Отбор.Вставить("ТМЦ", ВыборкаИзЗапроса.ТМЦ); МассивВозможныхДублей = ТЧРасхНакл.НайтиСтроки(Отбор); Для Каждого Товар Из МассивВозможныхДублей Цикл
Если ВыборкаИзЗапроса.КоличествоОстаток = 0 Тогда УчЦена = 0; Иначе УчЦена = ВыборкаИзЗапроса.СуммаОстаток/ВыборкаИзЗапроса.КоличествоОстаток; КонецЕсли;
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Отбор = Новый Структура;
Пока ВыборкаИзЗапроса.Следующий() Цикл
Отбор.Вставить("ТМЦ", ВыборкаИзЗапроса.ТМЦ); МассивВозможныхДублей = ТЧРасхНакл.НайтиСтроки(Отбор); Для Каждого Товар Из МассивВозможныхДублей Цикл
Если ВыборкаИзЗапроса.КоличествоОстаток = 0 Тогда УчЦена = 0; Иначе УчЦена = ВыборкаИзЗапроса.СуммаОстаток/ВыборкаИзЗапроса.КоличествоОстаток; КонецЕсли;
ЛевоеСоединение в данном случае значит: Выбрать все записи с табличной части и к ним присоединить количествоОстаток из регистра ТМЦ, по условию, что ТоварТЧ = Товар в регистре (Строка в Запросе
| ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
)
Цитата
Остатки из временной таблицы переносятся в остатки регистра накопления ТМЦОстатки или что((?
Не переносятся, а присоединяются. Как описано выше.
Если я правильно вас понял. УчЦена в документе расходной это та цена по которой этот товар закупили. А УчСумма соответсвенно стоимость по которой закупили. То получиться чтото вроде этого
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ, | СУММА(РасходнаяНакладнаяТЧРасхНакл.Количество) КАК Количество |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл |ГДЕ | РасходнаяНакладнаяТЧРасхНакл.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ТоварыДок.Количество, | ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) КАК СуммаОстаток |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок)) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли;
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли; КонецЦикла;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ(РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Возврат; КонецЕсли;
Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок) | И Склад = &Склад) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
Проверка на остаток лучше делать в процедуре "ОбработкаПроведения".
Вообще, запрос в цикле для проверки остатка (и вобще) это мягко говоря не красиво.
я бы проверил остатки тех товаров которые в документе так:
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ, | СУММА(РасходнаяНакладнаяТЧРасхНакл.Количество) КАК Количество |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл |ГДЕ | РасходнаяНакладнаяТЧРасхНакл.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ТоварыДок.Количество |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок)) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Дата", Дата);
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли; КонецЦикла;
КонецПроцедуры
Рассчитать УчЦену и УчСумму. тут не понятно, куда ее алгоритм должен заполнять. Если в документ расходной то не понятен практический смысл от этого. Может все таки нужно списать товары с регистра ТМЦ?
Привет всем. Есть конфа Управление небольшой фирмой для Украины 1.4.2.2 Полностью типовая. Файловый вариант. В целом база летает, документы открываются быстро, но при открытии именно Журнала документов "Документы по кассе" 1с начинает думать минуты 3 (а если отдельно открыть список РКО или ПКО то открывается быстро), проведение документа из этого же журнала занимает примерно столько же времени. И это даже происходит на машине на которой база лежит с 1м пользователем. (не в сети дело). В этом журнале всего 3500 документов РКО и ПКО за 1.5 года. Тестирование и исправление со всеми галочками делал, результата 0. Запускал базу на очень мощной машине, результат примерно на 10% лучше. Но это все равно не то, антивирус тоже отключал. Файл 1Cv8.1CD занимает 450 мб. Неужели, пора на SQL переходить? И кстати, база лежала на флешке и пользователи через сеть работали с ней. Может чего нибудь повредилось в базе. Посоветуете, может существуют какие-нибудь решения? А если обновить до более нового релиза, теоретически трабла может решится ?
СписокОтбора = ОтобратьЗначения(Текст); //Здесь возвращаем запросом найденные результаты в виде списка значений Если СписокОтбора.Количество()<2 Тогда ЭлементыФормы.Удалить(СписокВыбора); мПолеПодбора = Неопределено; Иначе СписокВыбора.Значение = СписокОтбора; СписокВыбора.Высота = 20*СписокОтбора.Количество(); КонецЕсли;
Если СписокОтбора.Количество()=1 Тогда ТекстАвтоПодбора = СписокОтбора[0].Значение; КонецЕсли;
Спасибо, буду как-то дальше выкручиваться. Подумал над вариантом создания 2х полей, одно сделать скрытым спецом под список выбора, а второе - для ввода.
Приветствую! Создал тут поиск по строке аля поиск как в гугле. Но есть проблема: Когда начинаешь вводить символы, выдает похожие результаты - все правильно. Но курсор ввода при этом слетает с поля ввода, приходится мышью его устанавливать, что есть не удобно. Есть какие-то идеи для решения? Или система на такое не способна?
Проблема решена. Оказалось, проблема была в договоре. В реквизите "договор" во всех документах по данному контрагенту договор только отображался, но на самом деле его не было если перейти по ссылке. Создали новый договор и все ОК. Спасибо кто заглядывал в тему и уделял внимание!
Не помогло, к сожалению. Еще заметил, что проводки в документе возврата формируються только Дт 631 Кт281, а Дт 644 Кт 631 не формирует (сторнирование налогового кредита)
Привет! При заполнении акта сверки (по кнопке заполнить) в табличную часть попадают документы движения. Все правильно. Но для документа "Повернення товарів постачальнику" почему-то ставиться сумма БЕЗ НДС., а для "Надходження товарів і послуг" С НДС. Видимо, чтото с документом возврата, хотя, как видно на картинке, в возврате сумма ндс есть. Изза такой разбежности естественно сверка не правильна. Пролейте свет пожалуйста, где зарыта собака
Приветствую . Нужно вывести список всех документов "Реализация товаров" за период и прикрепить к ним оплату - ПКО или Платежное поручение входящее и налоговую накладную, если есть (Если нету оплаты или налоговой то Реализацию товаров все равно оставлять с пустыми данными).
Собственно вывожу список расходных
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров, РеализацияТоваровУслуг.СуммаДокумента КАК СуммаРеализации, РеализацияТоваровУслуг.Сделка ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
Потом присоединяю НН к НИМ по основанию
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров, РеализацияТоваровУслуг.СуммаДокумента КАК СуммаРеализации, РеализацияТоваровУслуг.Сделка, НалоговаяНакладная.Ссылка КАК Налоговая ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Документ.НалоговаяНакладная КАК НалоговаяНакладная ПО РеализацияТоваровУслуг.Ссылка = НалоговаяНакладная.ДокументОснование ГДЕ РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон И НалоговаяНакладная.Дата МЕЖДУ &ДатаНач И &ДатаКон
И тут проблема.. выводятся ТОЛЬКО те расходные у которых есть НН, (будто я применил внутреннее соединение). Расходные без налоговых просто отбрасываются. Не пойму, почему левое соединение не хочет работать?, Т.е оставить полностью расходные. Почему так? Пролейте свет пожалуйста.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!