С Новым годом! Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/250: Рейтинг темы: голосов - 250, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20

Запрос к регистру накопления при проведении документа

08.07.2010, 16:50. Показов 50967. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, плиз, как при проведении документа "Реализация товаров и услуг" определить сколько осталось отгрузить уже с учетом проводок этого документа?
Я написала запрос в ОбработкеПроведения, но по текущему документу еще нет в этот момент информации в регистрах. Есть в модуле документа что-то типа "ПослеПроведения"? =)
Мой запрос:

Код ( (Unknown Language)):

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
...
// USR-Modification on 09 July 2010 by Mariya - Begin
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя.Ссылка КАК ЗаказПокупателя,
| ЗаказыПокупателейОстаткиИОбороты.Номенкл атура КАК Номенклатура,
| ЗаказыПокупателейОстаткиИОбороты.Количес твоКонечныйОстаток КАК ОсталосьОтгрузить
|ИЗ
| РегистрНакопления.ЗаказыПокупателей.Оста ткиИОбороты() КАК ЗаказыПокупателейОстаткиИОбороты
|ГДЕ
| ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя = &ЗаказПокупателя
|{УПОРЯДОЧИТЬ ПО
| Номенклатура.*}
|ИТОГИ
| СУММА(ОсталосьОтгрузить)
|ПО
| ОБЩИЕ,
| ЗаказПокупателя,
| Номенклатура
|{ИТОГИ ПО
| Номенклатура.*}";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ЗаказПокупате ля",Сделка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.ОсталосьОтгрузить = 0 Тогда
НачислитьБонус = Истина;
Иначе
НачислитьБонус = Ложь;
КонецЕсли;
КонецЕсли;
...
// USR-Modification on 09 July 2010 by Mariya - End
КонецПроцедуры // ОбработкаПроведения()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2010, 16:50
Ответы с готовыми решениями:

Запрос к регистру накопления с расчетом итогов 1с 8.2
Есть регистр накопления, в котором хранятся записи в разрезе организаций, складов и номенклатуры. Например: Организация1 Склад1...

Запрос к движению ингредиентов при проведении документа "Выпуск" (изделий)
С заполнением полей, кроме поля "Размерность", нет никаких проблем при попытке проведения документа выдает ошибку , см скрин Такое...

Запрос к регистру накопления и регистру сведенй
как не используя СКД в 1 запросе получить запись из Регистра сведений на момент записи регистра накопления? конкретнее нужна себестоимость...

21
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
08.07.2010, 17:22
Достаточно дубовый вариант - перебрать строки документа (если номенклатура в них живет, конечно). При переборе вызывать запрос (только ещё добавить в него фильтр по номенклатуре) и сравнивать количество в запросе и количество в строке документа. Если не совпадают - значит НачислитьБонус = ложь.

Другой вариант - это использование РегистрНакопленияМенеджер.Остатки() с фильтрованием (проверка та-же) А вот дальше вопрос - в семерке была штука под названием Актуальность(), а вот в восьмерке я её не наблюдаю. С ней все фактические изменения при проведении документа тут-же отражались на итогах. Может в восьмерке это ПересчитатьТекущиеИтоги?

Кстати - если набор движений создается после запроса- то и информация о движениях будет пустой- её таки реально нет на момент выполнения запроса.
0
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 38
09.07.2010, 07:16
По идее после записи движений в регистр, можно уже получать остатки с учетом текущего документа
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
11.07.2010, 13:02
Цитата Сообщение от kaa
По идее после записи движений в регистр, можно уже получать остатки с учетом текущего документа
Значит набор движений отдельно, документ отдельно? и завсегда автоматом? Это есть очень хорошо! Тогда у автора поста скорее всего запрос идет раньше создания и записи набора записей регистра.
0
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
11.07.2010, 14:10
Цитата Сообщение от kaa
По идее после записи движений в регистр, можно уже получать остатки с учетом текущего документа
В какой момент происходит запись движений в регистр? Я свой запрос вставила в конец процедуры ОбработкаПроведения, в которой все движения по регистрам уже прошли. И все равно по текущему доку пока еще нет данных в регистрах накопления....
"По идее" я тоже так думала, а на практике вышло совсем иначе...
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
11.07.2010, 15:57
Запись происходит в момент НаборДвижений.Записать();

Может ему РАЗРЕШЕННЫЕ мешает? Хотя это вроде на права доступа чтоб не ругалось...

А как выглядит проведение по регистрам в виде кода?
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
11.07.2010, 16:05
Чтоб узнать хватит ли остатков на складе, используйте параметры виртуальной таблицы оборотов, четвертый параметр кажется. "Метод дополнения - движения и граница периода" и как параметр в запрос массив номенклатуры документа.
0
0 / 0 / 0
Регистрация: 02.03.2007
Сообщений: 272
11.07.2010, 16:25
Чтото я Вас не понимаю. Зачем вам именно при "проведении" документа чтото вычислять, что потом еще должно попасть в форму ( так мне показалось)?Просто ПриЗаписи() этого делать нельзя? Например при условии, что документ проведен. Если проведен и остаток по запросу = 0 тогда и начисляйте свой бонус.
Как мне кажется, смысл процедуры ОбработкаПРоведения не в том, чтобы производить какието расчеты уже после записи, а в том, чтобы "положить" данные в нужные регистры.
0
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
12.07.2010, 10:11
Цитата Сообщение от tanat
Чтото я Вас не понимаю. Зачем вам именно при "проведении" документа чтото вычислять, что потом еще должно попасть в форму ( так мне показалось)?Просто ПриЗаписи() этого делать нельзя? Например при условии, что документ проведен. Если проведен и остаток по запросу = 0 тогда и начисляйте свой бонус.
Как мне кажется, смысл процедуры ОбработкаПРоведения не в том, чтобы производить какието расчеты уже после записи, а в том, чтобы "положить" данные в нужные регистры.
А в какой момент тогда определять, что документ проведен и остаток = 0? Если мне нужно автоматически, без лишних движений менеджеров, начислять бонусы (Создавать новый док "Бонусы"), при условии что товар по заказу реализован полностью.
0
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
12.07.2010, 11:20
Цитата Сообщение от Darlock
Чтоб узнать хватит ли остатков на складе, используйте параметры виртуальной таблицы оборотов, четвертый параметр кажется. "Метод дополнения - движения и граница периода" и как параметр в запрос массив номенклатуры документа.
Мне нужно узнать не сколько остатков на складе, а сколько реализовано по заказу (если заказ реализован полностью, тогда начислять бонус). А что за "Метод дополнения - движения и граница периода"? Можно поподробнее?
0
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
12.07.2010, 11:47
Цитата Сообщение от puh14
Запись происходит в момент НаборДвижений.Записать();

Может ему РАЗРЕШЕННЫЕ мешает? Хотя это вроде на права доступа чтоб не ругалось...

А как выглядит проведение по регистрам в виде кода?
Код можно посмотреть в типовой УТ, обработка проведения документа "Реализация товаров и услуг".
Там много вложенных процедур...
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">ОбработкаПроведения</div></div><div class="sp-body"><div class="sp-content">

Код ( (Unknown Language)):
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

(...)
// Движения по документу
Если Не Отказ Тогда

// Подготовим таблицу скидок для проведения.
ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТовара м, ТаблицаПоУслугам, СтруктураШапкиДокумента);

ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре,
ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок);
КонецЕсли;

// USR-Modification on 09 July 2010 by Mariya - Begin
//Если заказ оплачен и реализован, тогда - НачислитьБонус
НачислитьБонус = Ложь;
(...)
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя.Ссылка КАК ЗаказПокупателя,
| ЗаказыПокупателейОстаткиИОбороты.Номенкл атура КАК Номенклатура,
| ЗаказыПокупателейОстаткиИОбороты.Количес твоКонечныйОстаток КАК ОсталосьОтгрузить
|ИЗ
| РегистрНакопления.ЗаказыПокупателей.Оста ткиИОбороты() КАК ЗаказыПокупателейОстаткиИОбороты
|ГДЕ
| ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя = &ЗаказПокупателя
|{УПОРЯДОЧИТЬ ПО
| Номенклатура.*}
|ИТОГИ
| СУММА(ОсталосьОтгрузить)
|ПО
| ОБЩИЕ,
| ЗаказПокупателя,
| Номенклатура
|{ИТОГИ ПО
| Номенклатура.*}";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ЗаказПокупате ля",Сделка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.ОсталосьОтгрузить = 0 Тогда
НачислитьБонус = Истина;
Иначе
НачислитьБонус = Ложь;
КонецЕсли;
КонецЕсли;

Если НачислитьБонус и Сделка.НачислитьБонус Тогда
(...)
СделкаОбъект.Записать();
КонецЕсли;
КонецЕсли;
// USR-Modification on 09 July 2010 by Mariya - End

КонецПроцедуры // ОбработкаПроведения()
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">ДвиженияПоРегистрам</div></div><div class="sp-body"><div class="sp-content">

Код ( (Unknown Language)):
Процедура ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента,
ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок)

ТаблицаПоКомплектам = УправлениеЗапасами.СформироватьТаблицуКо мплектующих(ТаблицаПоТоварам, ЭтотОбъект);

ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента,
ТаблицаПоТоварам, ТаблицаПоКомплектам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам,
ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок);

ДвиженияПоРегиструТоварыОрганизаций(Режи мПроведения, СтруктураШапкиДокумента,
ТаблицаПоКомплектам, ТаблицаПоТаре, ТаблицаПоУслугам, Отказ, Заголовок);

Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Покупателем Тогда
ДвиженияПоРегистрамОперативныхВзаиморасч етов(РежимПроведения, ТаблицаПоВзаиморасчетам,
Отказ, Заголовок, СтруктураШапкиДокумента);
КонецЕсли;

ДвиженияПоРегиструСписанныеТовары(Структ ураШапкиДокумента, ТаблицаПоКомплектам,
ТаблицаПоТаре, Отказ, Заголовок);

Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Покупателем Тогда

СтруктураТаблицыВыручки = Новый структура("НомерСтроки, Номенклатура, ВидЦенности, Ценность, Партия, Услуга
|,СтавкаНДС, Сумма, СуммаВал, НДС, НДСВал, СуммаБезНДС, СуммаБезНДСВал
|,Комиссионный,Комитент,ДоговорКомиссии, ВалютаРасчетовСКомитентом
|,СуммаСписания, Количество");

//Формируем таблицу выручки с нужной структурой и заполняем по таблице услуг
ТаблицаВыручки = ОбщегоНазначения.СформироватьТаблицуЗнач ений(ТаблицаПоУслугам,СтруктураТаблицыВы ручки,,Истина);

ВыручкаПоТоварам = ОбщегоНазначения.СформироватьТаблицуЗнач ений(ТаблицаПоТоварам,СтруктураТаблицыВы ручки,,Истина);
ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ВыручкаПоТоварам,ТаблицаВыручки );

ТаблицаВыручки.ЗаполнитьЗначения(Ложь, "Комиссионный");
ТаблицаВыручки.ЗаполнитьЗначения(0, "Количество");

ТаблицаАвансов = Новый ТаблицаЗначений;
ТаблицаАвансов.Колонки.Добавить("Докумен тОплаты");
ДвиженияРегистровПодсистемыНДС(Структура ШапкиДокумента, ТаблицаПоУслугам, ТаблицаВыручки, ТаблицаАвансов, Отказ, Заголовок);

КонецЕсли;

Если ТаблицаПоКомплектам.Количество() + ТаблицаПоТаре.Количество() >0 тогда

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

// Проводить по партиям сразу нужно если установлен параметр
// учетной политики СписыватьПартииПриПроведенииДокументов
ПроводитьПоПартиям = РегистрыСведений.УчетнаяПолитика.Получит ьПоследнее(Дата).СписыватьПартииПриПрове денииДокументов;

Если ПроводитьПоПартиям Тогда

УправлениеЗапасамиПартионныйУчет.Движени еПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить());

Иначе

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

КонецЕсли;

КонецПроцедуры
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">ДвиженияПоРегистрамУпр</div></div><div class="sp-body"><div class="sp-content">

Код ( (Unknown Language)):
Процедура ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента,
ТаблицаПоТоварам, ТаблицаПоКомплектам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам,
ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок)

Если ОтражатьВУправленческомУчете Тогда

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

Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Покупателем Тогда
Если СуммаДокумента <> 0 Тогда

// По регистру ПродажиПоДисконтнымКартам.
Если ЗначениеЗаполнено(СтруктураШапкиДокумент а.ДисконтнаяКарта) Тогда
НаборДвижений = Движения.ПродажиПоДисконтнымКартам;

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

// Заполним таблицу движений.
СтрокаДвижений = ТаблицаДвижений.Добавить();
СтрокаДвижений.ДисконтнаяКарта = СтруктураШапкиДокумента.ДисконтнаяКарта;
СтрокаДвижений.ВладелецДисконтнойКарты = СтруктураШапкиДокумента.Контрагент;
СтрокаДвижений.Сумма = МодульВалютногоУчета.ПересчитатьИзВалюты ВВалюту(СуммаДокумента, ВалютаДокумента,
СтруктураШапкиДокумента.ВалютаУправленче скогоУчета,
СтруктураШапкиДокумента.КурсДокумента,
СтруктураШапкиДокумента.КурсВалютыУправл енческогоУчета,
СтруктураШапкиДокумента.КратностьДокумен та,
СтруктураШапкиДокумента.КратностьВалютыУ правленческогоУчета);

НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

Если Не Отказ Тогда
НаборДвижений.ВыполнитьДвижения();
КонецЕсли;
КонецЕсли;
КонецЕсли;

// ТОВАРЫ ПО РЕГИСТРУ Продажи.

НаборДвижений = Движения.Продажи;

ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

ТаблицаПоТоварам.Колонки.НДС.Имя = "НДСВрем";
ТаблицаПоТоварам.Колонки.НДСУпр.Имя = "НДС";

// Заполним таблицу движений.

Если СтруктураШапкиДокумента.ВедениеУчетаПоПр оектам Тогда

УправлениеПроектами.ОтразитьДвиженияПоПр оектам(ТаблицаПоТоварам,ТаблицаДвижений, Проект, Дата, "Продажи");

Иначе

ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоТоварам, ТаблицаДвижений);

КонецЕсли;

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


НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

Если Не Отказ Тогда
Движения.Продажи.ВыполнитьДвижения();
КонецЕсли;

// УСЛУГИ ПО РЕГИСТРУ Продажи.

НаборДвижений = Движения.Продажи;

ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

ТаблицаПоУслугам.Колонки.НДС.Имя = "НДСВрем";
ТаблицаПоУслугам.Колонки.НДСУпр.Имя = "НДС";

// Заполним таблицу движений.

Если СтруктураШапкиДокумента.ВедениеУчетаПоПр оектам Тогда

УправлениеПроектами.ОтразитьДвиженияПоПр оектам(ТаблицаПоУслугам,ТаблицаДвижений, Проект, Дата, "Продажи");

Иначе

ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоУслугам, ТаблицаДвижений);

КонецЕсли;

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

НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

Если Не Отказ Тогда
Движения.Продажи.ВыполнитьДвижения();
КонецЕсли;

// ПО РЕГИСТРУ ПредоставленныеСкидки.
НаборДвижений = Движения.ПредоставленныеСкидки;

ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

// Заполним таблицу движений.
ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоСкидкам, ТаблицаДвижений);

ТаблицаДвижений.ЗаполнитьЗначения(Ссылка ,"ДокументСкидки");
ТаблицаДвижений.ЗаполнитьЗначения(Догово рКонтрагента,"ПолучательСкидки");

НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

Если Не Отказ Тогда
Движения.ПредоставленныеСкидки.Выполнить Движения();
КонецЕсли;

ТаблицаПоТоварам.Колонки.НДС.Имя = "НДСУпр";
ТаблицаПоТоварам.Колонки.НДСВрем.Имя = "НДС";

ТаблицаПоУслугам.Колонки.НДС.Имя = "НДСУпр";
ТаблицаПоУслугам.Колонки.НДСВрем.Имя = "НДС";

КонецЕсли;

Если ВидПередачи = Перечисления.ВидыПередачиТоваров.СоСклад а Тогда
// ТОВАРЫ ПО РЕГИСТРУ ТоварыНаСкладах.

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

Если Не РезультатЗапросаКомплектыОпт.Пустой() ИЛИ НЕ РезультатЗапросаТараОпт.Пустой() Тогда

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

Если НЕ Отказ Тогда
СтруктТаблицДокумента = Новый Структура;
СтруктТаблицДокумента.Вставить("Комплект ыОпт", РезультатЗапросаКомплектыОпт.Выгрузить() );
СтруктТаблицДокумента.Вставить("ТараОпт" , РезультатЗапросаТараОпт .Выгрузить());

ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыНаСкладах, СтруктТаблицДокумента);

ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Качество", Справочники.Качество.Новый, "ТараОпт");

ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыНаСкладах, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, Дата);
КонецЕсли;

КонецЕсли;

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

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

Если Не Отказ Тогда
ТаблицаКомплектыРозн = РезультатЗапросаКомплектыРозн.Выгрузить( );
ТаблицаТараРозн = РезультатЗапросаТараРозн.Выгрузить();

ТаблицаКомплектыРозн.Колонки.Добавить("С уммаПродажная", ОбщегоНазначения.ПолучитьОписаниеТиповЧи сла(15, 2));

Если ТаблицаКомплектыРозн.Количество() <> 0 Тогда
ТаблицаПоЦенам = УправлениеРозничнойТорговлей.Сформироват ьЗапросПоПродажнымЦенам(Дата, ТаблицаКомплектыРозн.ВыгрузитьКолонку("С клад"),
ТаблицаКомплектыРозн.ВыгрузитьКолонку("Н оменклатура")).Выгрузить();

УправлениеРозничнойТорговлей.ЗаполнитьКо лонкуСуммаПродажная(ТаблицаКомплектыРозн , ТаблицаПоЦенам, "ВидСклада");
КонецЕсли;

ТаблицаТараРозн.Колонки.Добавить("СуммаП родажная", ОбщегоНазначения.ПолучитьОписаниеТиповЧи сла(15, 2));

Если ТаблицаТараРозн.Количество() <> 0 Тогда
ТаблицаПоЦенам = УправлениеРозничнойТорговлей.Сформироват ьЗапросПоПродажнымЦенам(Дата, ТаблицаТараРозн.ВыгрузитьКолонку("Склад" ),
ТаблицаТараРозн.ВыгрузитьКолонку("Номенк латура")).Выгрузить();

УправлениеРозничнойТорговлей.ЗаполнитьКо лонкуСуммаПродажная(ТаблицаТараРозн, ТаблицаПоЦенам, "ВидСклада");
КонецЕсли;

СтруктТаблицДокумента = Новый Структура;
СтруктТаблицДокумента.Вставить("Комплект ыРозн", ТаблицаКомплектыРозн);
СтруктТаблицДокумента.Вставить("ТараРозн " , ТаблицаТараРозн);

ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыВРознице, СтруктТаблицДокумента);

ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Качество", Справочники.Качество.Новый, "ТараРозн");

ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыВРознице, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, Дата);
КонецЕсли;

КонецЕсли;

Иначе // отпуск по ордеру

// Проверка остатков при оперативном проведении.
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Движения.ТоварыКПередачеСоСкладов.Контро льОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок);
Движения.ТоварыКПередачеСоСкладов.Контро льОстатков(ЭтотОбъект, "ВозвратнаяТара", СтруктураШапкиДокумента, Отказ, Заголовок);
КонецЕсли;

// ТОВАРЫ И ТАРА ПО РЕГИСТРУ ТоварыКПередачеСоСкладов.
Если Не Отказ Тогда

СтруктТаблицДокумента = Новый Структура;
СтруктТаблицДокумента.Вставить("ТаблицаТ овары", ТаблицаПоКомплектам);
СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", ТаблицаПоТаре);

ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыКПередачеСоС кладов, СтруктТаблицДокумента);

ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "ДокументПередачи", Ссылка);
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Куплен ный, "ТаблицаТовары");
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Возвра тнаяТара, "ТаблицаПоТаре");
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Качество", Справочники.Качество.Новый, "ТаблицаПоТаре");

ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыКПередачеСоСкла дов, ВидДвиженияНакопления.Приход, ТаблицыДанныхДокумента, Дата);

КонецЕсли;
КонецЕсли;

// Проверка остатков лимитов возвратной тары при оперативном проведении.
Если РежимПроведения = РежимПроведенияДокумента.Оперативный И ТаблицаПоТаре.Количество()<>0 Тогда
Движения.ТоварыПереданные.КонтрольЛимито вВозвратнойТары(ЭтотОбъект, СтруктураШапкиДокумента, Отказ, Заголовок);
КонецЕсли;

// ТАРА ПО РЕГИСТРУ ТоварыПереданные
Если Не Отказ Тогда
СтруктТаблицДокумента = Новый Структура;
СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", ТаблицаПоТаре);

КопияТаблицаПоТаре = ТаблицаПоТаре.Скопировать();
КопияТаблицаПоТаре.Колонки.ЗаказПокупате ля.Имя = "Сделка";

СтруктТаблицДокумента = Новый Структура;
СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", КопияТаблицаПоТаре);

Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Комиссионером Тогда
КопияТовары = ТаблицаПоТоварам.Скопировать();

КопияТовары.Колонки.ЗаказПокупателя.Имя = "Сделка";

СтруктТаблицДокумента.Вставить("ТаблицаТ овары", КопияТовары);
КонецЕсли;

ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыПереданные, СтруктТаблицДокумента);

Если СтруктураШапкиДокумента.ВедениеВзаиморас четов = Перечисления.ВедениеВзаиморасчетовПоДого ворам.ПоСчетам Тогда
Для Каждого ТаблицаДанных Из ТаблицыДанныхДокумента Цикл
ТаблицаДанных.Значение.ЗаполнитьЗначения (Сделка, "Сделка");
КонецЦикла;
КонецЕсли;

ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "ДоговорКонтрагента", ДоговорКонтрагента);
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Контрагент", Контрагент);
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Организация", Организация);
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПередачи", Перечисления.СтатусыПолученияПередачиТов аров.ВозвратнаяТара, "ТаблицаПоТаре");

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

ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыПереданные, ВидДвиженияНакопления.Приход, ТаблицыДанныхДокумента, Дата);
КонецЕсли;

// ТОВАР, ТАРА И УСЛУГИ ПО РЕГИСТРУ ЗаказыПокупателей.

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

Если Не Отказ Тогда
СтруктТаблицДокумента = Новый Структура;
СтруктТаблицДокумента.Вставить("ТаблицаП оТоварам", ТаблицаПоТоварам);
СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", ТаблицаПоТаре);
СтруктТаблицДокумента.Вставить("ТаблицаП оУслугам", ТаблицаПоУслугам);

ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ЗаказыПокупателей, СтруктТаблицДокумента);
ОбщегоНазначения.УдалитьСтрокиИзТаблицДо кумента(ТаблицыДанныхДокумента, "ЗаказПокупателя");

ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "ДоговорКонтрагента", ДоговорКонтрагента);
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Куплен ный, "ТаблицаПоТоварам,ТаблицаПоУслугам") ;
ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Возвра тнаяТара, "ТаблицаПоТаре");

ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ЗаказыПокупателей, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, Дата);
КонецЕсли;

// Если есть списание из резерва, то надо списать резерв
ТаблицаПоТоварамИзРезерва = ТаблицаПоТоварам.Скопировать();
Сч = 0;
Пока Сч < ТаблицаПоТоварамИзРезерва.Количество() Цикл
СтрокаТаблицы = ТаблицаПоТоварамИзРезерва.Получить(Сч);
Если СтрокаТаблицы.СпособСписанияОстаткаТовар ов <> Перечисления.СпособыСписанияОстаткаТовар ов.ИзРезерва
ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицы.ЗаказПок упателя) Тогда
ТаблицаПоТоварамИзРезерва.Удалить(Строка Таблицы);
Иначе
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;

Если ТаблицаПоТоварамИзРезерва.Количество() > 0 Тогда
НаборДвижений = Движения.ТоварыВРезервеНаСкладах;

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

// Заполним таблицу движений.
ТаблицаПоТоварамИзРезерва.Колонки.ЗаказП окупателя.Имя = "ДокументРезерва";
ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоТоварамИзРезерва, ТаблицаДвижений);

НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

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

Если Не Отказ Тогда
Движения.ТоварыВРезервеНаСкладах.Выполни тьРасход();
КонецЕсли;

КонецЕсли;

ТаблицаПоТареИзРезерва = ТаблицаПоТаре.Скопировать();
Сч = 0;
Пока Сч < ТаблицаПоТареИзРезерва.Количество() Цикл
СтрокаТаблицы = ТаблицаПоТареИзРезерва.Получить(Сч);
Если СтрокаТаблицы.СпособСписанияОстаткаТовар ов <> Перечисления.СпособыСписанияОстаткаТовар ов.ИзРезерва
ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицы.ЗаказПок упателя) Тогда
ТаблицаПоТареИзРезерва.Удалить(СтрокаТаб лицы);
Иначе
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;

Если ТаблицаПоТареИзРезерва.Количество() > 0 Тогда

НаборДвижений = Движения.ТоварыВРезервеНаСкладах;

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

// Заполним таблицу движений.
ТаблицаПоТареИзРезерва.Колонки.ЗаказПоку пателя.Имя = "ДокументРезерва";
ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоТареИзРезерва, ТаблицаДвижений);

НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

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

Если Не Отказ Тогда
Движения.ТоварыВРезервеНаСкладах.Выполни тьРасход();
КонецЕсли;

КонецЕсли;

КонецЕсли; // Если ОтражатьВУправленческомУчете

КонецПроцедуры // ДвиженияПоРегистрамУпр()
0
0 / 0 / 0
Регистрация: 02.03.2007
Сообщений: 272
12.07.2010, 16:39
Если уж Вам так надо, чтобы все выводилось "автоматом" то я бы действовал так:перед записью (ну или если оооочень уж хочется - то при проведении) документа получал остатки без учета текущих ( или будущих) движений, из них - вычитал нужные суммы по документу, формировал нужный Вам бонус, а только потом делал бы движения.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
12.07.2010, 20:36
Мне кажется движения можно принудительно записать до окончания проведения, и тогда движения попадут в остатки.
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
13.07.2010, 11:25
Цитата Сообщение от Marija
Мне нужно узнать не сколько остатков на складе, а сколько реализовано по заказу (если заказ реализован полностью, тогда начислять бонус). А что за "Метод дополнения - движения и граница периода"? Можно поподробнее?
В запросе, в параметрах виртуальной таблицы выпадающий список. Выбрать пункт "Движения и границы периода"



Цитата Сообщение от unknown181538
Мне кажется движения можно принудительно записать до окончания проведения, и тогда движения попадут в остатки.
Методически не верное решение. Разрешается писать в регистр с помощью метода "Записать()" только в том случае, если полученные данные потом используются для формирования движений по второму регистру. Принудительная же запись должна быть сразу удалена из регистра.
0
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
13.07.2010, 11:48
Цитата Сообщение от unknown181538
Мне кажется движения можно принудительно записать до окончания проведения, и тогда движения попадут в остатки.
Да, это как раз помогло, спасибо! А точно не на что не повлияет в дальнейшем такая хитрость?
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
13.07.2010, 13:08
Цитата Сообщение от Marija
Да, это как раз помогло, спасибо! А точно не на что не повлияет в дальнейшем такая хитрость?
например вариант - первые движения записали, а на вторых движениях произошло исключение, и документ пошел на отказ проведения. А вот первые-то движения остаются, так как уже записаны (если ошибаюсь - поправьте).
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
13.07.2010, 13:52
Цитата Сообщение от puh14
например вариант - первые движения записали, а на вторых движениях произошло исключение, и документ пошел на отказ проведения. А вот первые-то движения остаются, так как уже записаны (если ошибаюсь - поправьте).
Все проведение ведь в транзакции. Откат транзакции должен произойти.
0
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
13.07.2010, 17:35
Цитата Сообщение от unknown181538
Все проведение ведь в транзакции. Откат транзакции должен произойти.
Т.е. вы предполагаете, что все же можно записать движения принудительно?
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
13.07.2010, 17:40
Цитата Сообщение от unknown181538
Откат транзакции должен произойти
Откат произойдет, только для тех движений, которые были подготовлены в набор, но не записаны еще.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
14.07.2010, 15:48
Код ( (Unknown Language)):
Процедура ОбработкаПроведения(Отказ, Режим)
НаборДвижений = Движения.РеализацияУслуг;
Движение = НаборДвижений.Добавить();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.Сумма = 1000;
НаборДвижений.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РеализацияУслуг.Организация
|ИЗ
| РегистрНакопления.РеализацияУслуг КАК РеализацияУслуг
|ГДЕ
| РеализацияУслуг.Регистратор = &Регистратор";

Запрос.УстановитьПараметр("Регистратор", Ссылка );

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(ВЫборка.Организация);

КонецЦикла;


Отказ = Истина;
Возврат;
КонецПроцедуры

Пишет "операция не выполнена", движений не создается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2010, 15:48
Помогаю со студенческими работами здесь

Заполнение реквизита документа программно из результата запроса к регистру накопления
Здравствуйте. Делаю конфигурацию в 1С 8.3.Есть Документ &quot;НазначенияСотрудникам&quot;,регистрирующий работы для сотрудников. Среди всех...

Запрос к регистру накопления
Здравствуйте! Есть документ Накладная с табличной частью ПереченьНоменклатуры (реквизиты номенклатура, сумма, количество); есть регистр...

Запрос по регистру накопления за период
Здравствуйте! Создаю запрос по регистру накопления остатки и обороты с параметрами &quot;ДатаНачала&quot; и &quot;ДатаКонца&quot;. За...

Как получить актуальные остатки по регистру накопления в обработке провед документа с учетом его движений
Народ, подскажите как при проведении документа через ОбработкуПроведения (процедура проведения в общем модуле самописная) получить...

1с УТ 10.3. Создание документа на основании при проведении другого документа. Реализация механизма перепроведения.
Доброго времени суток, задача стояла при проведении одного документа1, создавался другой документ2 и проводился, это я сделал, но если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru