Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запись и чтение на языке 1С:Предприятие 8.3 , Нужно записть в базу значение реквищита и потмо его прочитать          
nickolas Подменю пользователя
сообщение 19.10.16, 13:02
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

Создал в справочниках доп.пункт
выглядит так: Справочники.ШтрихкодыНоменклатуры
- Реквизиты
-КодШтрихкодаНоменклатуры
-КодНоменклатуры
-НомерДокументаНоменклатуры
-НазваниеДокументаНоменклатуры

больше ничего не добавлял, все реквизиты Строка, разница лиш в длине.

Далее делаю запись в бд из модуля объекта
Процедура ЗаписьВБД(Штрихкод, КодНом, НомерДокНом, НазвДокНом) Экспорт
СправочникОбъект = Справочники.ШтрихкодыНоменклатуры.СоздатьЭлемент();
СправочникОбъект.КодШтрихкодаНоменклатуры = Штрихкод;
СправочникОбъект.КодНоменклатуры = КодНом;
СправочникОбъект.НомерДокументаНоменклатуры = НомерДокНом;
СправочникОбъект.НазваниеДокументаНоменклатуры = НазвДокНом;
СправочникОбъект.Записать();
КонецПроцедуры

Процедуру вызываю из Процедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)Экспорт    

Если ЭтоНовый() Тогда
Штрихкод = ПолучитьШКПоУникальномуЗначению(); ///тут 13-ти числовой правильный EAN-13 номер штрихкода тип Строка
ЗаписьВБД(Штрихкод, "201", "0000000001", "РасходныйОрдерНаТоварыОпер"); // вызов процедуры для записи уникального значения ШК и присвоение его к номеру документа
КонецЕсли;

    Если ОбменДанными.Загрузка  Тогда
        Возврат;
    КонецЕсли;
    
    мУдалятьДвижения = НЕ ЭтоНовый();
    
КонецПроцедуры // ПередЗаписью

Потом, в месте вывода картинки штрихкода пишу запрос
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
                      |    ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
                      |ИЗ
                      |    Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
                      |ГДЕ
                      |    ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = ""0000000001""";
                      |    ШтрихкодыНоменклатуры.КодНоменклатуры = "201";
ВыборкаШтрихкода = ЗапросШтрихкода.Выбрать();

ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;

// тут я просто не знаю что писать, нужно данные реквизита КодШтрихкодаНоменклатуры
// те самые 13 цифр которые я "записал" в модуле объекта перед записю, который я должен взять по номеру документа и коду номенклатуры
ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ???;

ТабДок.Вывести(ОбластьМакета);


вот собственно вопрос, я не могу, пока что, разобраться с запросами, самое элементарное - записать и прочитать данные из БД.

Сообщение отредактировал Vofka - 19.10.16, 14:53

Vofka Подменю пользователя
сообщение 19.10.16, 13:20
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст =
"ВЫБРАТЬ
|    ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
|ИЗ
|    Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
|    ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = ""0000000001""";
|    ШтрихкодыНоменклатуры.КодНоменклатуры = "201";

ВыборкаШтрихкода = ЗапросШтрихкода.Выполнить().Выбрать();
Пока ВыборкаШтрихкода.Следующий() Цикл
    ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
    ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
    ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ВыборкаШтрихкода.КодШтрихкодаНоменклатуры;
    ТабДок.Вывести(ОбластьМакета);
КонецЦикла;

nickolas Подменю пользователя
сообщение 19.10.16, 13:51
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

Пишу так
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
                      |    ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
                      |ИЗ
                      |    Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
                      |ГДЕ
                      |    ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = 000000002 И ШтрихкодыНоменклатуры.КодНоменклатуры = 201";

ВыборкаШтрихкода = ЗапросШтрихкода.Выполнить().Выбрать();                      
Пока ВыборкаШтрихкода.Следующий() Цикл
    ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
    ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
    ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ВыборкаШтрихкода.КодШтрихкодаНоменклатуры;
    ТабДок.Вывести(ОбластьМакета);
КонецЦикла;

в предыдущем в условии были ошибки, думаю так будет правильнее как выше, но дает пустой результат в строке

logist Подменю пользователя
сообщение 19.10.16, 14:06
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(nickolas @ 19.10.16, 14:51) *
пустой результат


Цитата(nickolas @ 19.10.16, 14:51) *
НомерДокументаНоменклатуры = 000000002

не может быть так, если НомерДокументаНоменклатуры строка то ""000000002"" (с кавычкам) если число то "2" (без нулей), с остальным так же

Сообщение отредактировал logist - 19.10.16, 14:07


Signature
Личные бесплатные консультации не даю, для этого есть форум!

nickolas Подменю пользователя
сообщение 19.10.16, 22:33
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 15:06 * ,
как получить данные без цикла?

nickolas Подменю пользователя
сообщение 20.10.16, 9:00
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

Еще вопрос
Как в запрос в условие поместить переменную по примеру ниже?
Переменная1 = "201";
Переменная2 = "00000000001";
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
                      |    ШтрихкодыНоменклатуры.КодШтрихкодаНоменклатуры
                      |ИЗ
                      |    Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
                      |ГДЕ
                      |    ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = Переменная2 И ШтрихкодыНоменклатуры.КодНоменклатуры = Переменная1";

ВыборкаШтрихкода = ЗапросШтрихкода.Выполнить().Выбрать();

Vofka Подменю пользователя
сообщение 20.10.16, 9:54
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(nickolas @ 19.10.16, 23:33) *
как получить данные без цикла?

Зачем?

Цитата(nickolas @ 20.10.16, 10:00) *
Как в запрос в условие поместить переменную по примеру ниже?

...
|ГДЕ
|    ШтрихкодыНоменклатуры.НомерДокументаНоменклатуры = &НомерДокументаНоменклатуры
...
ЗапросШтрихкода.УстановитьПараметр("НомерДокументаНоменклатуры", "12345");


Вы пробовали хоть какую-то книжку по 1С открывать?


nickolas Подменю пользователя
сообщение 20.10.16, 12:17
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

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";
?>

Теперь зачем, потому как к примеру счас мне нада вытянуть всего лиш одну запись из другой таблици и с ней работать по всему коду. А другого способа передачи содержимого как не через бд я не вижу вообще в 1С. Ну или может не знаю про такие еще. Покажите мне вот эти два запроса как их реализовать в 1С.

Petre Подменю пользователя
сообщение 20.10.16, 12:58
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

nickolas @ Сегодня, 13:17 * ,
Если предполагается выборка одной записи, то достаточно такого:
Если ВыборкаШтрихкода.Следующий() Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШтрихкод");
    ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.ТипКода = 1;
    ОбластьМакета.Рисунки.РисунокШтрихкод.Объект.Сообщение = ВыборкаШтрихкода.КодШтрихкодаНоменклатуры;
    ТабДок.Вывести(ОбластьМакета);
КонецЕсли;


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

nickolas Подменю пользователя
сообщение 25.10.16, 12:52
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

Еще созрел такой вопрос у меня, вот к примеру есть у меня такой код в модуле менеджера
ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст =
"ВЫБРАТЬ
|    ШтрихкодыНоменклатуры.Штрихкод // сгенерировано и заполнено с самого начала работы
|    ШтрихкодыНоменклатуры.Номер //добавилось при записи
|    ШтрихкодыНоменклатуры.КодДокумента // добавилось при записи
|ИЗ
|    Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
|ШтрихкодыНоменклатуры.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();


Пока Выборка.Следующий() Цикл
/// тут всякие мои манипуляции с данными
/// в результате чего у меня есть данные
НомерДок = Выборка.Номер;
КоДок = Выборка.КодДокумента;

/// тут момент вопроса***
/// как в уже заполненой бд изменить например Выборка.Штрихкод чтоб было = ""+КодДок+НомерДок;
/// и затем его запросить
ШтрихкодДок = Выборка.Штрихкод; // и чтоб вывелся уже новый ШК, который я буду использовать далее
КонецЦикла;

Атрибут "Штрихкод" у мня прописался у меня в Модуде Объекта в Процедуре ПередЗаписью(), тоисть он добавился в бд и прикрепился к будующей записи, и так как я не знаю какой будет новый порядковый номер документа то я его не могу туда вписать в сам штрихкод, поэтому генернирую штрихкод по другому уникальному значению, так сказать не чичтабельный выходит.
Вопрос, как выше, где находиться *** прописать перезапись штрихкода, и птстроить его из тех данных которые я достал запросом.

Есть вот такой код, я так понимаю это общая функция изменения записи
Если Выборка.Следующий() Тогда
    СправочникОбъект = Выборка.Ссылка;
    СправочникОбъект.Артикул = "Артикул";
    СправочникОбъект.Записать();
КонецЕсли;

Я пробовал вот так:
Если Выборка.Следующий() Тогда
    СправочникОбъект = Выборка.Штрихкод;
    СправочникОбъект.Штрихкод = ""+КодДок+НомерДок;
    СправочникОбъект.Записать();
КонецЕсли;


но не робит, что я делаю не так?

sava1 Подменю пользователя
сообщение 25.10.16, 13:40
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

ЗапросШтрихкода = Новый Запрос;
ЗапросШтрихкода.Текст = "ВЫБРАТЬ
|    ШтрихкодыНоменклатуры.Ссылка,
|    ШтрихкодыНоменклатуры.Штрихкод // сгенерировано и заполнено с самого начала работы
|    ШтрихкодыНоменклатуры.Номер //добавилось при записи
|    ШтрихкодыНоменклатуры.КодДокумента // добавилось при записи
|ИЗ
|    Справочник.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
|ШтрихкодыНоменклатуры.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
   /// тут всякие мои манипуляции с данными /// в результате чего у меня есть данные
НомерДок = Выборка.Номер;
КоДок = Выборка.КодДокумента;

Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Штрихкод = НовыйШтрихкод;
Объект.Записать();

КонецЦикла;


Сообщение отредактировал sava1 - 25.10.16, 13:41

nickolas Подменю пользователя
сообщение 26.10.16, 8:38
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

sava1 @ Вчера, 14:40 * ,
Пишит "Поле обєкта на виявлено (Ссылка)"

sava1 Подменю пользователя
сообщение 26.10.16, 9:12
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

В запросе первая строка

nickolas Подменю пользователя
сообщение 26.10.16, 13:02
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 36
Спасибо сказали: 0 раз
Рейтинг: 0

sava1 @ Сегодня, 10:12 * , так робит, спасибо. Но не пойму откуда взялось поле Ссылка если его нет в бд?

pablo Подменю пользователя
сообщение 26.10.16, 16:41
Сообщение #15

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Откуда в php появляется this, оттуда же в 1с появляется Ссылка.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 1:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!