Всем доброго дня. Есть документ который необходимо сохранять только при условии полного заполнения обязательных полей(реквизитов). В моем случае выполняется проверка на предмет заполнения полей и соответственно кнопки "ОК" и "Записать" меняются на Доступные/Не доступные.
Но есть одна проблема - и эта проблема в кнопке "Закрыть" в заголовке окна. Если закрывать новый документ таким образом запрашивается сохранение документа - жмем "Да" и документ создается с не заполненными обязательными реквизитами. (процедура ПриЗаписи() - проверяет поля - выдает ошибку - но документ всеравно создается)
Какие будут советы? Заранее спасибо.
п.с. //Я пока вижу один вариант - создать обработку - визуальную копию документа. Заполнил все в обработке - создался документ - иначе просто закроется обработка. Но этот вариант очень не хочется использовать
Доброго дня. Собственно такой вопрос: - на форме несколько элементов диалога, при изменении какого-либо из них нужно выполнить процедуру. Получается что-то вроде ( процедура ПриИзминенииЗначенияЭлементовНаФорме() ). Возможно есть какая-то предопределенная функция или событие? Как-то не хочется в формулу каждого элемента вписывать свою процедуру.
Как говорится если долго мучиться что-нибуть получится. Ошибка была в сравнениях значений таблицы и субконто БИ. (в таблице значение типа ссылка, в БИ возвращалось типа строка) Решение следующее:
Если Бухи.ВыполнитьЗапрос(КонДата, КонДата,"281,282")=0 Тогда Возврат; КонецЕсли;
Бухи.ВыбратьСубконто(1); Пока Бухи.ПолучитьСубконто(1)=1 Цикл Бухи.ВыбратьСубконто(2);
Пока Бухи.ПолучитьСубконто(2)=1 Цикл Остатки=0; Товар=Бухи.ПредставлениеСубконто(2); Остатки=Бухи.СКД(3);
тзЗаказ.ВыбратьСтроки(); Пока тзТовары.ПолучитьСтроку()=1 Цикл Если Товар=тзТовары.Товар.Наименование Тогда // достаем "строку" наименования из ссылки на товар из ТЗ тзТовары.НаличиеСклад=Остатки; КонецЕсли; КонецЦикла;
Здравствуйте. Помогите разобраться. Пытаюсь узнать остатки товаров на основном складе на текущую дату:
спТовары=СоздатьОбъект("СписокЗначений"); тзТовары.выгрузить(спТовары,,,"Товар"); // товары по Номенклатуре спрСклади=СоздатьОбъект("Справочник.МестаХранения"); спрСклади.найтиПоКоду("1"); // основной склад ОснСклад=спрСклади.ТекущийЭлемент();
Бухи.ВыбратьСубконто(1); Пока Бухи.ПолучитьСубконто(1)=1 Цикл Тов=бухи.Субконто(1); Строка=""; Остатки=0; Если тзТовары.НайтиЗначение(Тов, Строка, "Товар")=1 Тогда Остатки=Бухи.СКД(3); тзТовары.установитьЗначение(Строка,"НаличиеНаСкладе", Остатки); КонецЕсли; КонецЦикла;
результат - везде наличие на складе по нулям. Где-то что-то не то но разобраться не могу.
тзТаблица.ВыбратьСтроки(); Пока тзТаблица.ПолучитьСтроку()=1 Цикл ЗапросПН(); КонецЦикла;
Все работает, результат правильный. Но больно долго думает, особенно когда товаров много. Что-то мне подсказывает что есть варианты "По правильнее" и более быстрые.
Спасибо. Пока еще новичок, может глупые вопросы но все же: При использовании документа : 1. Пользователь сделал заказ - создался документ Пользователь снова делает заказ - Снова создавать документ? или внести изменения в существующий?
2. Если хочу посмотреть ВСЕ заказы от ВСЕХ пользователей - получается надо перебирать все табличные части всех созданных документов? а можно ли получить "Сводную таблицу" из всех табличных частей всех документов (дабы видеть что есть/ что надо см.п3)
3. Тут как-бы такой нюанс: КорзинаЗаказов - это сумарная таблица "Что/кому/сколько надо". Делая заказы у поставщиков не всегда получаем то что заказываем (некторые товары могут отсутствовать или вообще быть сняты с производства). В итоге получается в созданном документе (табличная часть например) - из 20 товаров, 2 могут не прийти( или прийти частично) При оприходовании товара в документе надо 18 отметить как такие что "Доставлены/приобретены", а 2 оставить в "повторно заказать" (либо "Дозаказать" если пришли частично) Получается как бы проводится не весь документа а только некоторые товары. а в случае отсутствия товара в принципе (снят с производства) документ не будет проведен вообще. Ну да в принципе не будет документ проведен и с ним. главное товары по отмечать.
Порекомендуйте пожалуйста как быть? 1с 7.7 Абби, работают несколько менеджеров/бухгалтеров, каждый отвечает за свои определенные товары. Все работают в некой внешней обработки, которая показывает рейтинги продаж, наличие товарар на складах и т.д. не суть важно. Тут же они проставляют заказы, при этом проставленные заказы нигде не заносятся и "живы" пока работает внешняя обработка.
Хочу сделать нечто вроде "Глобальной корзины" куда бы все менеджеры/бухгалтера кидали заказываемые товары. Данные в корзину закидываются по принципу таблички: товар/количество/склад/день заказа/менеджер/.... т.д. Данные должны сохранятся-добавляться-удалятся.
Не знаю куда/как/где сделать такую таблицу, чтобы она "Жила" всегда в системе 1с. Посоветуйте что-нибудь. Что сделать? справочник/документ... или что другое?
Часто стыкаюсь с необходимостью выполнять одно и тоже действие с несколькими схожими элементами, постоянно спрашивать - не вариант, найти толкового урока, объяснения по этому вопросу не получается. Любые советы, рекомендации касательно одинаковой множественной обработки (обработка одинаковая но с разными параметрами, либо одна для множества элементов). Интересуют как бы такие варианты (например):
1. На форме несколько элементов "Поле ввода" содержимое должно обрабатываться по одному и тому-же принципу (одна процедура) но с разными параметрами, как правильно это оформлять? 3. Аналогично п.1 проверка элементов "Поле со списком" (на предмет Текущего значения к примеру). 2. На форме несколько элементов "Флажок", необходимо: проверить их содержимое/массово снять флажок(или установить).
В общем нужны рекомендации касательно обработок нескольких схожих элементов.
Увы мой уровень пока позволяем мне решать такие задачи весьма не грамотно :
// проверка флажков на выбор Если Флаг1=1 тогда сообщить("первый флажок"); Если Флаг2=0 Тогда сообщить ("второй флажок не выбран"); // и т.д. //***** // выбор только 1го флажка из 4х (аналог переключателя но нужны именно флажки, потому как нужен вариант без выбора) Если Флаг1=1 Тогда Флаг2=0; Флаг3=0; Флаг4=0; Конец Если;
Если Флаг2=1 Тогда Флаг1=0; Флаг3=0; Флаг4=0; Конец Если; // и т.д.
// А если название флажков/элементов разные? флАльфа=1; флБета=1; ... флОмега=1; // аналогично флАльфа=0; и т.д. все в 0
несомненно такие операции можно заключать в циклы и обрабатывать все сразу, а не делать немереным количеством одинаковых строк. Код при это становится в разы короче и выглядит грамотнее.
Всем заранее спасибо! За наглядные примеры отдельная благодарность.
Характеристики нужны для выполнения подбора/поиска. В теории работать это должно так:
Вариант - Имеется Телефон Какой-то, с Bluetooth, разъемом 3,5 под гарнитуру, слот на microSD до 16Гб, размер 120х60х11, при выборе телефона необходимо показать товары подходящие этому телефону - Первоначально поиск будет проводится по наименованию (на соответствие марки+модели телефона) из самого справочника ТМЦ, Если результат отрицательный - дополнительно проверяется Характеристика, результат - (все товары где в наименовании присутствует данная модель + товары в характеристиках которых указан Bluetooth/3,5/microSD+2-16Гб/размеры входящие в границы +/- "Х" мм, и т.д.)
При таком использовании для программного кода(как по мне) не особо важно в каком справочнике реквизит Характеристика находится (в справочнике ТМЦ, или подчиненном), так что тут более вопрос касательно - А как бы вы сделали? (учитывая ваш опыт и знания)
Помогите пожалуйста советом: Задача - к элементу справочника ТМЦ (товар) необходимо присваивать некие характеристики. Проблема в том, что для разных товаров характеристики разные.
Пример для наглядности: Телефон (хар-ка - Wifi(±), Bluetooth(±), microSD, размер), Чехол к телефону (материал, размер), Гарнитура (Bluetooth/разьем(3,5/2,5/microUSB)), Карта памяти (Обьем(2/4/8/16/32Gb), тип карты(miniSD/microSD/SD)).
Все варианты характеристик зарание известны (пример слот/карты памяти - microSD/miniSD/SD, тип подключения miniUSB/microUSB/USB, Наличие беспроводных связей Wifi±Bluetooth±3G)
1. Как/куда записывать такие данные? - добавить поле в справочнике ТМЦ или сделать подчиненный справочник? 2. Куда закинуть такие характеристики? - стоит ли сделать справочник Характеристики? 2. Как реализовать возможность присваивать характеристики определенных типов для разных товаров.
Мои идеи на этот счет следующие: Для выбора нужных характеристики сделать справочник(ВариантыХарактеристик) с 2 Реквизитами Название Товара и Характеристики (в это поле закинуть все возможные значения). При заполнении элемента ТМЦ Предоставлять Поле список с возможным вариантом выбора определенных (одного или нескольких) характеристик (из справочника ВариантыХарактеристик) Результаты записывать в реквизит Характеристики справочника ТМЦ.
... ну сам же перерасчет со старой цены на новую (с учетом скидки) вы же напрограммировали?
еще есть тот факт, что при проведении документы сохраняют информацию в проводках и регистрах только в Количестве и Общей Стоимости. Информация о цене за единицу, только в табличной части самого документа - это в типовых конфигурациях.
не знаю, правильно ли для бухгалтеров... хорошо сразу грузить в приходную двумя строками: первую строку по перерасчитанной округленной к меньшему цене n-1 штуку, и вторую строку - по цене =Общая стоимость - (n-1)*перерасчитанная цена, округленная к меньшему. На пару копеек цена второй строки будет отличаться.
.. или точность цены приходной увеличить до трех?
все считается у контрагента мне только Итоговая сумма указывается. Но если мне провести аналогичный перерасчет (беру цену - множу на количество - результат сумма заполняется автоматически) то выходит разница на 1-2 копейки в моих расчетах и то что указано в накладной, которая быть не должна, тут и приходится эти пару копеек подкручивать вручную (Точность Цена товара остается неизменной, да она и не так важна). В общем на всю Приходную на 40-50 товаров попадается эта ситуация у 1-2х товаров.
в приходной скидки - это 9.99 вместо округленного 10.0 ? так вы ж читаете 9.99 из Эксель? где тогда корректировка? случайный " клац" по цене или количество в приходной возможен?
Вам если расходную представили на сумму 1000,00 грн, то для получения заказа вы должны уплати именно 1000, а не 999,99, иначе 0,01 пойдет в задолженность.
Приведу пример (цены/скидка - отсебятина): Товар - стоимость - 38,98 грн. При заказе 5 штук - скида 1,5%. 38,98*5=194,90, (-1,5%) = 191,98 (точное число 191,9765) - сума к оплате (по расходной) 191,98 Новая цена 1й единицы товара 191,98/5 = 38,396, Какая новая цена 1й единицы товара должна стоять у меня в приходной??
в приходной точность цены 1 копейка итого: при цене 38,40 * 5 = 192,00 при цене 38,39 * 5 = 191,95. Получается "ни рыба ни мясо".
Если брать за основу цену 1й единицы товара правильного расчеты не получится, поэтому надо корректировать сумму. Это я к примеру на практике у меня в табличную часть загружаются цены за 1 единицу с бесконечной дробной частью, ну или с несколькими знаками (как в примере выше) в Приходной этого так быстро не найдеш, в таблице же сразу заметно даже по длине цыфр
Sede, у Вас одна обработка вызывает другую? В первой вы читаете файл эксель? Откуда таблица по расходной передается?
В документе Приходная (форма) кнопочка - Загружить с Екселя - Открывается внешняя обработка, в ней и открывается файлик, она же делает поиск, вытаскивает суму и т.д. и т.п. - результат возвращает название товара из номенклатуры(поскольку товар у контрагента имеет название отличительное от нашего), количество товара, цену, суму в табличную часть Приходной.
Если интересны все "Телодвижения" могу описать более детально.
цепочка не понятна.. из чего, откуда запускается обработка? Зачем нужно видеть содержание этой таблицы? Его менеджер может корректировать? перед тем как создать приходную? промежуточное вот это зачем?, в приходную сразу нельзя загрузить?
еще. таблица ввода данных - не?
В таблице сверяется товар(название) + возможны корректировки цены(хотя да - это можно сделать в приходной). Таблица не обязательна, но на ее основе будет сформирована Приходная. Значение можно и не видеть, но в приходной все равно придется пересмотреть (мало ли сума не сходится). Например мной наблюдается довольно частая ситуация, товар по расходной идет со скидками и т.д. в итоге встечаются такие ситуации - Товар - штук 3, цена за 1 шт. 3,33 - Стоимость 3х шт - 10,00. Если посчитать - 3*3,33 = 9,99 поэтому корректировку иногда все же приходится делать.( И снова - ДА это тоже можно сделать в приходной)
Да - можно не видеть, Да - можно корректировать в приходной, но решил спросить, ибо любая ситуация - наука, не пригодилось здесь - может понадобится в другом.
ЗЫ: Просто интересно где можно применить модально открытую форму которая сформирует таблицу и еще при этом что-то вернет туда откуда ее вызвали ?
Опытом поделитесь че Вы там такое делаете, что и впрям такая открытая форма уж очень так нужна ? Если честно, я такого еще нигде не встречал. Подход может заслуживать на звание "Ноу-хау".
Да нет, что Вы, "Ноу-хау" это не назвать - скорее отсутствие опыта в 1с. Начал изучать всего пару месяцев назад, поэтому это скорее отсутствие опыта и знаний нежели Ноу-хау.
А делаю я обработку, которая на основе Расходной накладной поставщика (документ Excel) загружает Приходную накладную в 1с. Задача поставлена так, чтобы оператор-менеджер "Легким движением руки" загружал в Приходную нужные товары, при этом совершая минимум "движений". Знаю что в интернет есть готовые решения(искал, находил) по ним как бы и делал свою. Если кратко описать: Берется расходная накладная контрагента (Excel документ), производится поиск оглавлений таблицы (Наименование, количество, цена, сума) далее поиск товара по коду контрагента, на основании кода - выбирается товар из собственного справочника ТМЦ. Результаты обработки заносятся в таблицу и потом с таблицы обработки результат передается в табличную часть Приходной накладной (Как раз на эту таблицу и хочется посмотреть - что же мы передаем в приходную) Вот как бы и все. Но это пока тока в идее потихоньку занимаясь реализаций приходится подстраиваться под возможности 1с потому как задумка это одно а вот практическая реализация другое.
Одна из проблем - невозможность передать Через "Параметр" вызова функции "ОткрытьФормуМодально" таблицу значений (максимум - список значений) поэтому приходится выкручиваться всякими вычурными и странными методами, да и местами полностью менять части обработки.
Вам спасибо за совет, скорее всего добавлю слой, куда запихну таблицу чтобы еще больше не усложнять ситуацию.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!