Создал в справочниках доп.пункт
выглядит так: Справочники.ШтрихкодыНоменклатуры
- Реквизиты
-КодШтрихкодаНоменклатуры
-КодНоменклатуры
-НомерДокументаНоменклатуры
-НазваниеДокументаНоменклатуры
больше ничего не добавлял, все реквизиты Строка, разница лиш в длине.
Далее делаю запись в бд из модуля объекта
Процедура ЗаписьВБД(Штрихкод, КодНом, НомерДокНом, НазвДокНом) Экспорт
СправочникОбъект = Справочники.ШтрихкодыНоменклатуры.СоздатьЭлемент();
СправочникОбъект.КодШтрихкодаНоменклатуры = Штрихкод;
СправочникОбъект.КодНоменклатуры = КодНом;
СправочникОбъект.НомерДокументаНоменклатуры = НомерДокНом;
СправочникОбъект.НазваниеДокументаНоменклатуры = НазвДокНом;
СправочникОбъект.Записать();
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)Экспорт
Если ЭтоНовый() Тогда
Штрихкод = ПолучитьШКПоУникальномуЗначению(); ///тут 13-ти числовой правильный EAN-13 номер штрихкода тип Строка
ЗаписьВБД(Штрихкод, "201", "0000000001", "РасходныйОрдерНаТоварыОпер"); // вызов процедуры для записи уникального значения ШК и присвоение его к номеру документа
КонецЕсли;
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
мУдалятьДвижения = НЕ ЭтоНовый();
КонецПроцедуры // ПередЗаписью
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
|ИЗ
| Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = ""0000000001""";
| ШтрихкодыНоменклатуры.КодНоменклатуры = "201";
ВыборкаШтрихкода = ЗапросШтрихкода.Выбрать();
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
// тут я просто не знаю что писать, нужно данные реквизита КодШтрихкодаНоменклатуры
// те самые 13 цифр которые я "записал" в модуле объекта перед записю, который я должен взять по номеру документа и коду номенклатуры
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ???;
ТабДок.Вывести(ОбластьМакета);
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст =
"ВЫБРАТЬ
| ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
|ИЗ
| Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = ""0000000001""";
| ШтрихкодыНоменклатуры.КодНоменклатуры = "201";
ВыборкаШтрихкода = ЗапросШтрихкода.Выполнить().Выбрать();
Пока ВыборкаШтрихкода.Следующий() Цикл
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ВыборкаШтрихкода.КодШтрихкодаНоменклатуры;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Пишу так
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
|ИЗ
| Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = 000000002 И ШтрихкодыНоменклатуры.КодНоменклатуры = 201";
ВыборкаШтрихкода = ЗапросШтрихкода.Выполнить().Выбрать();
Пока ВыборкаШтрихкода.Следующий() Цикл
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ВыборкаШтрихкода.КодШтрихкодаНоменклатуры;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Еще вопрос
Как в запрос в условие поместить переменную по примеру ниже?
Переменная1 = "201";
Переменная2 = "00000000001";
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
|ИЗ
| Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = Переменная2 И ШтрихкодыНоменклатуры.КодНоменклатуры = Переменная1";
ВыборкаШтрихкода = ЗапросШтрихкода.Выполнить().Выбрать();
...
|ГДЕ
| ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = &НомерДокументаНоменклатуры
...
ЗапросШтрихкода.УстановитьПараметр("НомерДокументаНоменклатуры", "12345");
Vofka @ Сегодня, 10:54
,
К примеру взять php, который я знаю, на нем пишу и неплохо читаю код.
Через цикл примерно как в 1С на php будет так:
<?php
$d = 1;
$query = "SELECT * FROM `sql_table` WHERE `id` = '.$id.'";
$res = mysql_query($query);
while($row = mysql_fetch_array($res))
{
echo "Номер: ".$row['id']."<br>\n";
echo "Имя: ".$row['firstname']."<br>\n";
echo "Фамилия: ".$row['surname']."<br><hr>\n";
}
?>
<?php
$id = 1;
$query = "SELECT `id`,`firstname`,`surname` FROM `sql_table` where id='.$id.'";
$res = mysql_query($query);
$row = mysql_fetch_row($res);
echo "Идентификатор: ".$row[0]."\n";
echo "Имя: ".$row[1]."\n";
echo "Фамилия: ".$row[2]."\n";
?>
nickolas @ Сегодня, 13:17
,
Если предполагается выборка одной записи, то достаточно такого:
Если ВыборкаШтрихкода.Следующий() Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ВыборкаШтрихкода.КодШтрихкодаНоменклатуры;
ТабДок.Вывести(ОбластьМакета);
КонецЕсли;
Еще созрел такой вопрос у меня, вот к примеру есть у меня такой код в модуле менеджера
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст =
"ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Штрихкод // сгенерировано и заполнено с самого начала работы
| ШтрихкодыНоменклатуры.Номер //добавилось при записи
| ШтрихкодыНоменклатуры.КодДокумента // добавилось при записи
|ИЗ
| Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
|ШтрихкодыНоменклатуры.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
/// тут всякие мои манипуляции с данными
/// в результате чего у меня есть данные
НомерДок = Выборка.Номер;
КоДок = Выборка.КодДокумента;
/// тут момент вопроса***
/// как в уже заполненой бд изменить например Выборка.Штрихкод чтоб было = ""+КодДок+НомерДок;
/// и затем его запросить
ШтрихкодДок = Выборка.Штрихкод; // и чтоб вывелся уже новый ШК, который я буду использовать далее
КонецЦикла;
Если Выборка.Следующий() Тогда
СправочникОбъект = Выборка.Ссылка;
СправочникОбъект.Артикул = "Артикул";
СправочникОбъект.Записать();
КонецЕсли;
Если Выборка.Следующий() Тогда
СправочникОбъект = Выборка.Штрихкод;
СправочникОбъект.Штрихкод = ""+КодДок+НомерДок;
СправочникОбъект.Записать();
КонецЕсли;
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Ссылка,
| ШтрихкодыНоменклатуры.Штрихкод // сгенерировано и заполнено с самого начала работы
| ШтрихкодыНоменклатуры.Номер //добавилось при записи
| ШтрихкодыНоменклатуры.КодДокумента // добавилось при записи
|ИЗ
| Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
|ШтрихкодыНоменклатуры.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
/// тут всякие мои манипуляции с данными /// в результате чего у меня есть данные
НомерДок = Выборка.Номер;
КоДок = Выборка.КодДокумента;
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Штрихкод = НовыйШтрихкод;
Объект.Записать();
КонецЦикла;
В запросе первая строка
sava1 @ Сегодня, 10:12
, так робит, спасибо. Но не пойму откуда взялось поле Ссылка если его нет в бд?
Откуда в php появляется this, оттуда же в 1с появляется Ссылка.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua