Постоянно пользуемся обработкой ЗагрузкаДанныхИзТабличногоДокумента.
Раньше при загрузке из накладной поставщика (эксель) в документ поступления при несоответствии номенклатуры нашей и поставщика (что естественно) выходили следующим образом: В карточке номенклатуры Наименование прописывали НАШЕ, а Полное наименовение прописывали как у поставщика. В обработке ЗагрузкаДанныхИзТабличногоДокумента в строке Наименовние ставим режим Вычислять и пишем такой код
//////////////////////////
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.НаименованиеПолное ПОДОБНО &НаименованиеПолное";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Результат = Выборка.Ссылка;
Иначе
ОписаниеОшибки = "Не найдена ноиенклатура с полным наименованием " + ТекстЯчейки;
КонецЕсли;
/////////////////////////
Сейчас обновил несколько релизов нараз.
И вижу появился новый регистр Номенклатура поставщика. (Может и раньше был, но я не знал)
Заполнил Список Номенклатура контрагентов, где указал соответствие нашей номенклатуры и контрагентов вручную (по другому-то как?)
И вот вопрос.
Может ли кто-нибудь подсказать как составить новый запрос при загрузке приходной накладной, чтоб обработка искала в эксель номенклатуру поставщика, а в документ поступления подставляла нашу?
Сам-то я на это не способен.
Спасибо.
(2) NE_ZNAIY, вот после такого вопроса точно ни кто не подскажет просто так. дело двух минут, разбираются все, разжовывать и в рот класть не любит народ, таких как вы видно издалека :)
(3) Alexey_A, о боже. что вам не понравилось в моём выражении!!
Да я заплатить готов за это.
Если вы в состоянии мне помочь, так скажите, что можете, но это будет стоить столько-то.
Если я кого-то обидел или огорчил своим выражением, что приношу свои извинения.
И не хотел, м не думал, что это будет выглядеть грубостью.
Просто просмотров куча, а работы тут на две минуты.
Но сам-то я только как пользователь.
ну делай запрос в регистр и смотри там, если сам ничего вобще непонимаешь воспользуйся аутсертингом, такую задачу любой программист решит минут за 15 максимум а то и меньше.
а так примерно будет так
регистр.ном как ном
из
рег.НомПост как регистр
где
ПолноеНаимен подобно &наименов
как видешь полная аналогия ток запрос в регистр,можешь в запросе напрямую поменять таблицу тогда если все ровно он все сам заменит
(4) XiPyPg, сам я не программист. И программистов тут, где я живу нету. Просто нету.
Поэтому я сюда и обратился. Здесь как бы всегда помогали.
Если кто-то может составить такой запрос, составте. Цену скажите. Я его тут и выложу для всех. Ведь это же даёт возможность штатными средствами загружать приходные накладные от любого поставщика. только предварительно, конечно, большая ручная работа по соответствию номенклатуры. Но один-то раз это можно сделать.
(6) NE_ZNAIY, развлекайтесь
Данное событие не очень удобно с точки зрения установки параметров, но как простое решение подходит.
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| НоменклатураКонтрагентов.Номенклатура
|ИЗ
| РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
|ГДЕ
| НоменклатураКонтрагентов.Контрагент = &Контрагент
| И НоменклатураКонтрагентов.КодНоменклатурыКонтрагента = &КодНоменклатурыКонтрагента
| // в зависимости от поля поиска надо оставить соответствующее условие
| //И НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента = &АртикулНоменклатурыКонтрагента
| //И НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО &НаименованиеНоменклатурыКонтрагента
// данное событие не удобно для заполнения параметров и код контрагента придется менять вручную
Запрос.УстановитьПараметр("Контрагент", Справочники.Контрагенты.НайтиПоКоду("Код вашего поставщика"));
// условие опять же зависит от поля поиска
Запрос.УстановитьПараметр("КодНоменклатурыКонтрагента", ТекстЯчейки);
Выборка = Запрос.Выполнить().ВЫбрать();
Если Выборка.Следующий() Тогда
Результат = Выборка.Номенклатура;
КонецЕсли;
И вижу появился новый регистр Номенклатура поставщика. (Может и раньше был, но я не знал)
Заполнил Список Номенклатура контрагентов, где указал соответствие нашей номенклатуры и контрагентов вручную (по другому-то как?)
в регистре хранится номенклатура (своя) и ее код (артикул,наименование) контрагента...по коду контрагента и артикулу(контрагента) - в регистре прямое сопоставление со справочником номенклатуры
(7) x_under, В накладной поставщика нет ни кода, ни артикула номенклатуры.
Только наименование.
Если у меня в "Списке Номенклутура контрагента" заполнено только наще наименование, контрагент, номенклатура поставщика.
Этого хватит?
Что-то у меня ничего не получается.
Нет, что-то не работает.
Во-вервых, я так понимаю после ПОДОБНО &НаименованиеНоменклатурыКонтрагента надо добавить кавычки " и точку с запятой ;?
И в какой момент долже выдаться запрос на ввод кода контрагента?
Потому как не спрашивает ничего.
Как вариант: создаешь справочник "Номенклатура контрагентов", туда пишешь наименование номенклатуры у контрагента и ссылку на свою номенклатуру, потом в табличную часть документа "Поступление" добавляешь колонку "Номенклатура контрагента", при загрузки из табличного документа заполнится колонка номенклатуры контрагента, а потом уже сопоставляешь ее с номенклатурой своей или вычисляешь в настройках загрузки ;)))
(10) Vary, В начале, в первом посте темы я написАл: "Заполнил Список Номенклатура контрагентов, где указал соответствие нашей номенклатуры и контрагентов вручную (по другому-то как?)"
Так что это у меня сделано.
(18) NE_ZNAIY, контрагента не спросит. Надо именно код в обработке менять как указали в (11)
Если у вас поиск по наименованию. то в запросе укажите закомментируйте условие по коду и оставьте условие по наименованию.
Про кавычки и точку с запятой - правильно. Писал в браузере, поэтому ошибки не проверял
Всё заработало!! ТЯЖЕЛО со мной...
такой в итоге код использовал.
===================
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| НоменклатураКонтрагентов.Номенклатура
|ИЗ
| РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
|ГДЕ
| НоменклатураКонтрагентов.Контрагент = &Контрагент
| И НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО &НаименованиеНоменклатурыКонтрагента";
Запрос.УстановитьПараметр("Контрагент", Справочники.Контрагенты.НайтиПоКоду("000000109"));
Запрос.УстановитьПараметр("НаименованиеНоменклатурыКонтрагента", ТекстЯчейки);
Выборка = Запрос.Выполнить().ВЫбрать();
Если Выборка.Следующий() Тогда
Результат = Выборка.Номенклатура;
КонецЕсли;
===========================
Правда, если обработка не нашла номенклатуры контрагента, то добавляет пустую строку.
Раньше-то, как бы помечала примечанием, что строка не найдена.
Но всё равно СПАСИБО!
А ещё в продолжении темы.
Оказывается имеется ограничение на уникальность строки с нашим наименованием номенклатуры?
Вполне может быть такая ситуация.
У поставщика номенклатура:
Сок агуша яблоко
Сок агуша апельсин
Сок агуша груша.
Ну и т.д.
А у нас
Сок агуша в ассортименте.
Более одного раза программа не даёт заносить наше наименование.
Можете подсказать как убрать это ограничение?
(24) NE_ZNAIY без изменения структуры базы:
вариант 1
добавить характеристику номенклатуры к "Сок агуша в ассортименте"...
ном-ра "Сок агуша в ассортименте"
хар-ка "яблоко"
хар-ка "апельсин"
....
вариант 2
добавить фейкового контрагента
мКонтрагенты = Новый Массив;
мКонтрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("000000109"));
мКонтрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("фейккод"));
Запрос.УстановитьПараметр("Контрагенты", мКонтрагенты);
исправить
|ГДЕ
| НоменклатураКонтрагентов.Контрагент В (&Контрагенты)
это позволит для фейкового кон-та добавить другое наименование...
ЗЫ православно верно использовать хар-ки, второй способ костыль, но должен работать. Правда вам придется завести немало левых контрагентов если у вас много таких позиций.
(25) minimajack, С фейками, наверное, не пойдёт. Как потом из приходгой накладной загружать.
С характеристиками никогда не работали.
А если конфу изменить, (всё равно изменена) то это где?
Не подскажете?
(26) NE_ZNAIY, работайте с характеристиками, либо правьте эксель файл(макросами заменяйте проблемные позиции), либо добавьте свой регистр, и там прописывайте соответствие
ЗЫ ломать не строить.
(26) NE_ZNAIY, Тыкать пальцем не буду, дам направление. В регистре сведений на закладке основная есть поля "Периодичность" и "Режим записи" покурите по ним информацию.
На самом деле подход не верен. Если вы свернуто ведете номенклатуру, то использование этого регистра теряет смысл. Регистр рассчитывает на связь один в один, то есть если контрагент дает вам 3 позиции вы их так и ведете.
Уважаемые, форумчане, которые, в отличие от меня разбираются в коде, помогите мне пожалуйста ещё.
Опять же грузим обработкой ЗаггрузкаДанныхИзТабличногоДокумента.
В накладной поставщика номенклатура не совпадает с нашей, но есть штрих-код, еоторый, естественно, идентичен нашему. У нас в базе все эти штрих-коды занесены.
КАК СДЕЛАТЬ - чтоб обработка искала штрих-коды в накладной, а подставляла в документ поступления наши наименования?
А можно ли вообще такое?
В строке ставите Вычислить, а в выражении пишите код
// запрос для получения данных
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 РегистрСведений.ШтрихКоды.* ГДЕ ШтрихКод = &ШтрихКод";
Запрос.УстановитьПараметр("ШтрихКод", ТекстЯчейки);
// построение выборки
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Результат = Выборка.Владелец;
// если используются характеристики или серии, то в их полях для вычисления необходимо указать
//Результат = Выборка.ХарактеристикаНоменклатуры;
//Результат = Выборка.СерияНоменклатуры;
//Результат = Выборка.ЕдиницаИзмерения;
Иначе
ОписаниеОшибки = "Данные о штрихкоде " + ТекстЯчейки + "не найдены");
КонецЕсли;
(42) NE_ZNAIY, наоборот, в конце была лишняя =)), синтаксически - скобки влияют лишь на порядок(приоритет) выполнения операций, но в данном случае абсолютно ненужны, и просто существовали - как остаток от копи-паста...
(45) kostyaomsk, Я б с удовольствием, но я в коде, как, Вы наверное, поняли ну нихрена не разбираюсь.
Я. конечно, не совсем идиот, но толку-то с меня как молока с козла. А у вас-то задача какая стоит? Мы так соответствие номенклатур нашей и контрагента вручную делаем. Используем почти стандартную обработку с ИТС ЗагрузкаДанныхИзТабличногоДокумента. Почти, потомучто тут кто-то её доработал, а я и скачал. Давно это было. Отличие доработанной, в том, что она сохраняет ранее настроенные колонки на вкладке "Настройка". Раньще стандартная не сохраняла. Сейчас не знаю. Может ребята-девчата из 1С доделали её. Я им писАл насчет её.
И как бы мы-то довольны.
В личку писать мани требуют, а у меня всего-то 0,45. Так что не могу. Извините.
Почту могу сказать
kidus@yandex.ru