Всех с Рождеством Христовым!!!!
Появилась такая идея: в документе Поступлении ТМЦ, выбираем Поставщика и в Подборе Номенклатуры, если есть Аналог Номенклатуры, то наше Наименование Номенклатуры подменялось бы на Наименование Поставщика.
Т.е. противоположность теме: "Заказ Поставщику и Аналоги Номенклатуры".
Можно такое реализовать? И как?
Появилась такая идея: в документе Поступлении ТМЦ, выбираем Поставщика и в Подборе Номенклатуры, если есть Аналог Номенклатуры, то наше Наименование Номенклатуры подменялось бы на Наименование Поставщика.
Т.е. противоположность теме: "Заказ Поставщику и Аналоги Номенклатуры".
Можно такое реализовать? И как?
По теме из базы знаний
- Алкогольная декларация для 1С 8.1, 8.2, 8.3 (1, 2, 3, 4, 5, 6, 7, 8 формы) УТ10.2/10.3, УТ11, УПП, КА, БП2.0/3.0, БП КОРП, Розница 1.0/2.1, Далион, Астор, УТАП и др. с подписью и шифрованием, редакция 2.3
- Правила обмена Реализация - Поступление (ТМЦ и Услуг) для конфигурации "Бухгалтерия для Казахстана версии 2.0.13.5" (и выше)
- Движение ТМЦ на складах для БП 3.0
- Движение товаров и материалов для БП 3.0 и КА 2
- Остатки товаров на складах по документам поступления для БП 3.0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Самоделкин,
Можно также использовать ещё один вариант:
- убрать колонку "Наименование",
- вместо этой колонки добавить колонку типа "Текст",
- в свойствах данной колонки, на закладке "Дополнительно" прописать вызов своей функции, например "ВывестиНаименование()".
- в модуле этой формы описать функцию. Например:
Раньше подобные решения не рекомендовались из-за резкого замедления. Сейчас, во времена гигабитных сетей, это, наверное, уже не актуально.
Если непонятно мое послепраздничное косноязычие, то посмотрите в типовой торговле реализацию вывода значений колонок "Ост" или "Ост.ф." в форме списка "ДляПодбора" в справочнике "Номенклатура".
В этой же форме, можно увидеть ещё один возможный способ отображения информации об аналоге: обратите внимание как вызывается и как работает функция "ИнформационнаяСтрокаПоНоменклатуре()".
Можно также использовать ещё один вариант:
- убрать колонку "Наименование",
- вместо этой колонки добавить колонку типа "Текст",
- в свойствах данной колонки, на закладке "Дополнительно" прописать вызов своей функции, например "ВывестиНаименование()".
- в модуле этой формы описать функцию. Например:
Функция ВывестиНаименование()
номенклатура = ТекущийЭлемент();
Если Номенклатура.ЭтоГруппа()=1 Тогда
Возврат номенклатура.Наименование;
Иначе
Если ЕстьАналог = 1 Тогда // проверка наличия аналога. Придумать самостоятельно
Возврат ПолучитьНазваниеАналога(Номенклатура); // получить название аналоги. Придумать самостоятельно.
Иначе
Возврат номенклатура.Наименование;
КонецЕсли;
КонецЕсли;
КонецФункции
ПоказатьРаньше подобные решения не рекомендовались из-за резкого замедления. Сейчас, во времена гигабитных сетей, это, наверное, уже не актуально.
Если непонятно мое послепраздничное косноязычие, то посмотрите в типовой торговле реализацию вывода значений колонок "Ост" или "Ост.ф." в форме списка "ДляПодбора" в справочнике "Номенклатура".
В этой же форме, можно увидеть ещё один возможный способ отображения информации об аналоге: обратите внимание как вызывается и как работает функция "ИнформационнаяСтрокаПоНоменклатуре()".
Элементарно, Ватсон! :)
Только лучше не подменять наименование номенклатуры, а рисовать рядом отдельной колонкой. Что бы пользователь видел наименование поставщика и свою номенклатуру.
Добавить в табличную часть текстовую колонку. В формулу колонки вызов функции. А дальше всё было в прошлой ветке. При окончании редактирования строки и после обработки заполнения или подбора заполнять таблицу значений аналогами номенклатуры. В функции текстовой колонки искать по таблице значений текущую номенклатуру и показывать её.
Только лучше не подменять наименование номенклатуры, а рисовать рядом отдельной колонкой. Что бы пользователь видел наименование поставщика и свою номенклатуру.
Добавить в табличную часть текстовую колонку. В формулу колонки вызов функции. А дальше всё было в прошлой ветке. При окончании редактирования строки и после обработки заполнения или подбора заполнять таблицу значений аналогами номенклатуры. В функции текстовой колонки искать по таблице значений текущую номенклатуру и показывать её.
(5) Самоделкин,
Снова повторюсь (уже не один раз вам писали об этом): я не вижу в этой ветке ни модуля, ни ссылки о каком модуле идет речь. Как понять вот это:
А так из серии "ОБС": может это реквизит экранной формы?
Снова повторюсь (уже не один раз вам писали об этом): я не вижу в этой ветке ни модуля, ни ссылки о каком модуле идет речь. Как понять вот это:
где в модуле найти Таблицу Многострочной Части
?
А так из серии "ОБС": может это реквизит экранной формы?
(6) l_user, в документе ПоступлениеТМЦ есть кнопка Подбор, по которой вызывается Справочник Номенклатуры Для Подбора, там в Диалоге есть Таблица Многострочной Части (где код, артикул, наименование, остаток и цена)(может она как-то и по другому называется) и Таблица Подбора (куда выводится выбранный товар).
Вот, чтобы добавить колонку, надо сначала найти эту Таблицу, я не знаю где искать.
Вот, чтобы добавить колонку, надо сначала найти эту Таблицу, я не знаю где искать.
(7) Самоделкин, То есть аналоги хочется показывать в подборе номенклатуры? Ой, небыстро может работать. Особенно при тех объёмах номенклатуры, которые, как говорят, возникают у торговлев автозапчастями. Рассказывают про сотни тысяч (и более) позиций в справочнике номенклатуры.
Но если хочешь попробовать....
Открой форму списка номенклатуры, которая для подбора. Выбери в меню "Вставить / текст" и ткни мышом в табличную часть справочника. В ней добавится в конце текстовая колонка. Перетащи её куда надо и укажи в формуле какую-нибудь функцию, которую позже напишешь.
Дальше возникают вопросы быстродействия. Реализовать можно много как, вопрос достаточной скорости и удобства работы пользователей.
Первое, что напрашивается, в ПриОткрытии вставить запрос и получить таблицу аналогов, как в прошлой ветке, только без отбора по номенклатуре. Вот тут могут быть первые тормоза, если справочник аналогов относительно большой. Несколько секунд на открытие форму подбора испортят всю пользу от показа аналогов.
Дальше написать в модуле форму функцию, имя которой ты указал в текстовой колонке. В этой функции искать в таблице аналогов, полученной в ПриОткрытии, текущую номенклатуру и показывать её. Тут второе место и тормозами. Потому что поиск по таблице значений, особенно если она большая, далеко не мгновенный. И это будет чувствоваться при перемещении по справочнику и поиску по добавленной колонке.
Дерзай, пробуй.
Но если хочешь попробовать....
Открой форму списка номенклатуры, которая для подбора. Выбери в меню "Вставить / текст" и ткни мышом в табличную часть справочника. В ней добавится в конце текстовая колонка. Перетащи её куда надо и укажи в формуле какую-нибудь функцию, которую позже напишешь.
Дальше возникают вопросы быстродействия. Реализовать можно много как, вопрос достаточной скорости и удобства работы пользователей.
Первое, что напрашивается, в ПриОткрытии вставить запрос и получить таблицу аналогов, как в прошлой ветке, только без отбора по номенклатуре. Вот тут могут быть первые тормоза, если справочник аналогов относительно большой. Несколько секунд на открытие форму подбора испортят всю пользу от показа аналогов.
Дальше написать в модуле форму функцию, имя которой ты указал в текстовой колонке. В этой функции искать в таблице аналогов, полученной в ПриОткрытии, текущую номенклатуру и показывать её. Тут второе место и тормозами. Потому что поиск по таблице значений, особенно если она большая, далеко не мгновенный. И это будет чувствоваться при перемещении по справочнику и поиску по добавленной колонке.
Дерзай, пробуй.
(8) vcv, спасибо! Завтра, если народа не будет, начну изгаляться!
Номенклатуры у нас пока не много, всего 15 тыс., посмотрим, будут тормоза, буду работать как сейчас, разгадывая Номенклатуру Поставщика (хотя я, в принципе, уже почти всю Номенклатуру Поставщиков выучил).
Номенклатуры у нас пока не много, всего 15 тыс., посмотрим, будут тормоза, буду работать как сейчас, разгадывая Номенклатуру Поставщика (хотя я, в принципе, уже почти всю Номенклатуру Поставщиков выучил).
(12) Самоделкин, Все не так. Переменную ТаблицаАналогов описать вверху, как переменную модуля. В ПриОткрытии выпонить запрос без фильтра по номенклатуре и выгрузить его в ТаблицаАналогов. Притом в тексте запроса заменить
|Аналог = Справочник.Аналоги.ТекущийЭлемент;
на
|Аналог = Справочник.Аналоги.Наименование;
Быстрее будет, не понадобится при выводе каждой строки обращение к базе за получением наименования аналога. Сразу будет брать строку наименования из результата запроса.
В функцию АналогПоставщика сделать так
|Аналог = Справочник.Аналоги.ТекущийЭлемент;
на
|Аналог = Справочник.Аналоги.Наименование;
Быстрее будет, не понадобится при выводе каждой строки обращение к базе за получением наименования аналога. Сразу будет брать строку наименования из результата запроса.
В функцию АналогПоставщика сделать так
Функция АналогПоставщика();
Строчка = 0;
// Поиск аналога Номенклатуры в каталоге Поставщика
Если ТаблицаАналогов.НайтиЗначение(Номенклатура,Строчка,"Номенклатура") = 1 Тогда
// Аналог найден
Воврат ТаблицаАналогов.ПолучитьЗначение(Строчка,"Аналог");
КонецЕсли;
КонецФункции;
Показать
(13) vcv, - это как сделать?
Остальное все сделал, но все равно: "Если ТаблицаАналогов.НайтиЗначение(Номенклатура,Строчка,"Номенклатура") = 1 Тогда
{Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(1588)}: Неверный идентификатор колонки!"
выполнить запрос без фильтра по номенклатуре
Остальное все сделал, но все равно: "Если ТаблицаАналогов.НайтиЗначение(Номенклатура,Строчка,"Номенклатура") = 1 Тогда
{Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(1588)}: Неверный идентификатор колонки!"
(14) Самоделкин, Запустить отладчик, поставить точку останова на проблемной строке. При остановке просмотреть значение переменной ТаблицаАналогов. Возможно ты забыл её описать как переменную модуля в самом верху. И в функции АналогПоставщика она просто не определена.
(15) vcv, когда только начинал знакомство с 1С, запускал Отладчик, ставил точки останова, но, честно говоря, так и не понял как он работает. Ну дошел до точки останова, открылся отладчик и что дальше делать, где что смотреть не понял.
В начале модуля прописал Перем ТаблицаАналогов, а что значит: "в функции АналогПоставщика она просто не определена"?
Функцию прописал, как Вы рекомендовали выше, все-равно эта ошибка.
В начале модуля прописал Перем ТаблицаАналогов, а что значит: "в функции АналогПоставщика она просто не определена"?
Функцию прописал, как Вы рекомендовали выше, все-равно эта ошибка.
В отладчике когда стоишь на точке останова то ты находишься в контексте программного окружения этой точки останов
На панели инструментов открой табло
Табло это есть формульный калькулятор по сути
В табло в строке ты можешь писать что угодно главное чтобы это что угодно возвращало ЗНАЧеНие
Это значение и будет через знак равно выводиться как результат вычисления записанного тобой выражения
В выражениях в табло можно писать все что тебе доступно в контексте точки останова
Например если ты в табло напишешь
?(1=1,"истина","ложь")
И нажмешь энтер то увидишь
?(1=1,"истина","ложь") = истина
Если напишешь просто
Тз.получитьзначение(номерстроки, "номенклатура")
То через равно увидишь значение из колонки номенклатура или сообщение об ошибке
Тыж хоть в какомто отладчике работал
Так и тут тире открыл окно вводишь в гего выражения видишь результат
На панели инструментов открой табло
Табло это есть формульный калькулятор по сути
В табло в строке ты можешь писать что угодно главное чтобы это что угодно возвращало ЗНАЧеНие
Это значение и будет через знак равно выводиться как результат вычисления записанного тобой выражения
В выражениях в табло можно писать все что тебе доступно в контексте точки останова
Например если ты в табло напишешь
?(1=1,"истина","ложь")
И нажмешь энтер то увидишь
?(1=1,"истина","ложь") = истина
Если напишешь просто
Тз.получитьзначение(номерстроки, "номенклатура")
То через равно увидишь значение из колонки номенклатура или сообщение об ошибке
Тыж хоть в какомто отладчике работал
Так и тут тире открыл окно вводишь в гего выражения видишь результат
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот